Skip to main content

Full text of "TS-2068 Up-date"

See other formats


f,f,|iiixiirH5 

$4J5/355f  $ii/|fir  Hiiiiifi  1554 


^  wmiE  ccMPaTER  SYSTEMS  ummiME  « 


UPDATE  COMPUTER  SYSTEMS  is  Editgd  and  Published  by  Frank  and 
Carol  Davis  of  P.O.  Box  1895,  Peru,  IN  46978  USA.  The  phone 
nuMber  is  317-473-8831  for  both  voice  and  fax,  with  norMal  phone 
hours  being  between  5  P.M.  and  9:38  P.M.  Eastern  Tiwe  during  the 
wpek  and  nnnn  to  6  P.M.  on  weekends.  Please  use  the  answering 
Machine  if  we  are  not  howe.  Most  answers  to  questions  left  on 
the  Machine  will  be  by  Mail,   long  distance  charges  are  too 
costly  for  a  SMall  Magazine. 

y.iiling  date  of  the  Magazine:  all  issues  will  be  Mailed  out  near 
the  2flth  of  the  Months  of  October.  Januaru.  April  and  July^  All 
Mailings  within  the  USA  are  by  bulk  Mail  and  May  take  a  few 
weeks  to  reach  you  at  the  Most.  Those  wishing  to  have  faster 
service  May  pay    $4  extra  for  First  Class  Mail.  The  present  rate 
for  North  Awerica  is  $18  in  US$,  and  $22  for  the  rest  of  the 
world.  Back  issues  of  the  Magazine  are  available  for  $16  per 
year  in  North  Awerica  and  $18  elsewhere  (it  is  cheaper  to  Mail  a 
bunch  as  opposed  to  one  issue  at  a  tiMe).  There  are  four  issues 
to  a  year,  with  each  year  of  a  subscription  starting  in  October 
and  ending  with  the  July  issue,  at  which  tiMe  your  subscription 
renewal  is  due.  TiMely  renewals  are  what  keep  us  in  business? 

Assistance  in  publishing  this  Magazine  is  provided  by  you  the 
readers,  Many  of  whoM  have  contributed  often  in  the  way  of 
reviews  and  articles.  He  offer  you  our  heai*tfelt  thanks.  Our 
Main  assistant  locally  is  longtiMe  friend  and  colleague,  Eliad 
P.  HannuMj  Poet  and  Psychologist,  as  well  as  Sinclair  coMputer 
user.  Many  thanks  to  our  regulars  such  as  Mike  Felerski,  Bill 
Cable,  Peter  Hale,  Paul  HolMgren,  Al  Feng,  Don  Lanbert,  Bob 
Hartung  and  Many  others.  Vou  are  all  welcoMe  to  subMit  Material 
for  inclusion  in  the  Magazine.  Please  Make  all  hard  copy 
subMissions  letter  or  NLQ;  no  draft  print  copies,  as  we  do  not 
have  Much  tine  for  re-typing.  Send  at  least  two  copies  hard  copy 
and  the  ^u*ticle  or  artwork  on  disk  where  possible.  No  audio  tape 
subwissions,  as  we  do  not  use  tape  as  a  Media,  please.  Try  to 
avoid  flowery  or  hard  to  read  f onts ...  unless  you  are  showing  us 
a  saMple  of  the  output  of  a  prograM .  If  artwork  is  to  be 
included  in  the  article,  please  let  us  know  in  what  order  you 
think  it  should  be  displayed. 

Those  wishing  to  place  ads  in  UPDATE  MAGAZINE:  We  have  two  ways 
of  handling  ads.     ONE,  we  will  do  reciprocal  ads  for  other 
publications  (generally  on  a  year  for  year  basis,  with  you 
sending  us  a  copy  of  the  issues  the  ad  is  placed  in).  The  other 
way  is  to  purchase  ad  space  froM  us,  with  the  fol lowing  rates  in 
effect  for  now:  $15  per  quarter  page;  $25  per  half  page;  and  $48 
per  full  page  ad.  This  is  per  issue.  For  inclusion  in  all  four 
issues,  you  pay  for  three  issues,  in  advance,  and  get  the  fourth 
ad  free.  Should  you  have  questions  on  this  please  contact  Frank 
Davis,  by  Mail  or  phone  as  listed  above. 

He  hope  to  be  of  service  to  you.  Thank  you? 


UPDATF  COMPUTER  PAGF  niRECXORY 

The  computer  that  an  article  concerns  is  marked  by 
using  the  f  oil  owing  mark  at  the  start  of  the  page: 
TS  -  article  for  TS20G8  or  Spectrum;  QL  -  article  for 
QL;  ZX  =  article  for  TS1000,  ZX91,  TS1500;  9S  = 
article  for  the  Z89. 

Front  couer  art  Rbed  Kahale  of  CRTUQ,  the  Chicago  area 
user  group. 

GI —  Page      1:  Directory  of  articles  In  January  Issue 
□L—  Page      2:  fl-DEE-DOO-DflH  1.8  fl  Front-End  For  the 
Jnzlp  Utllltu  bu  fll  Feng 

GI —  Page      3:  Wanted,   For  Sale,  and  Short  Meuscllps 
GI—  Page      4:  RNG  ad,   for  Rod  Gouen 
ZX—  Page      5:  Fix  the  ZX81^TS1988  Loose  Jack  Problen 
bu  Bill  Harner 

IS—  Page  6:  2868  Block-Moue  Error  bu  Bob  Hartung 
TS—  Page  6:  The  Ultlnate  flUTOSTRRT  b^  Bob  Suoger 
GI —  Page      8:  Mechanical  Affinity  ad 

TS —  Page      9:  Code  for  screen  dunps  to  24  pin  printers 
on  2868  b^  Charles  Bothner 

TS—  Page    14:   TS2868  Tape  To  Disk  Projects  and 


Ryallablllty  bj;  Frank  Daols 

TS—  Page    15:  fl  Guide  to  Using   "ctas.Br",  The 
Custonlzer,   and  the  Prlnter-fl  Revised  Version  of  Tasuord 


2  bji  Larrji  Crawford 
OL —  Page    28:  Miracle  In  Meuport,   2nd  Tine  Around 
TS —  Page    21:  Sone  Connents  on  '"bltln.BI",  A  Utlllto  to 
Create  and  Print  1  or  22  one-line  screen  files  to  a  Z4- 
pln  or  bubble  Jet  printer  bw  Larru  Crawford 
GI—  Page    24:  OZX-ad 

GI—  Page    24:   Back  Issues  of  Update  Special  Offer 

GI--  Page    25:  Modens  or  Black  Magic  bu  Abed  Kahale 

□L—  Page    26:  QBOX  CBBS) 

GI —  Page    26:  Conputer  Classlcs-ad 

QL—  Page    27:  Using  the  OL  bu  Ton^  Blizzard 

OL—  Page    29:  Exanple  Using  XChange  t  MallMerge  bu  Tony 

Bl  Izzard 

OL—  Page    38:  Mechanical  Afflnltii-ad 

OL--  Page    31:  QL  Public  Donaln  t  Shareware  bji  Paul 

Ao  Ingren 

OL—  Page    33:  OLerk  -  A  Reulew  b^  Hugh  Howie 

QL —  Page    35:  Archive  Series  Part  15:  Entering  Quero-  a 

Progran  to  Interrogate  Anu  Archive  Database  bv  Bill  Cable 

OL—  Page    38:  A-DEE-DGO-DAA  1.8  Listing 

88—  Page    41:  Correction  for  Z88  COM_CLI  fron  John 

Pegran 

88—  Page    42:  Various  Z88  Ads 

ZX—  Page    44:  ZX-Text  Article,  plus  AFR  Software  Ad 
GI—  Page    47:  Mew  Sinclair  Newsgroup  on  USEMET  bu  Tin 
Swenson 

88—  Page  58:  Z88  Source  Book  t  OL  Suruluors  Source  Book 
Back  Covers  —  TS2868  &  OL  Issue  Disks 


A-DEE-DOO-DAH  1.0 
A  FRONT-END  FOR  THE  UNZIP  UTILITY 

By  Al  Feng 

A  month-or-so-ago,  I  received  several  ZIP'ed  files  from  Nazir 
Pashtoon  (CATUG)  and  the  UNZIP  utility  (version  2.00)  which  had 
been  "ported  to  Qdos  by  Erik  Slagter"  [January  1993].  ZIP'ed 
files  are  files  which  have  been  compressed  by  algorithm. 

The  UNZIP  utility  —  like  its  DOS  cousin  —  is  implemented 
from  the  "command  line"  prompt.  If  you  make  a  Mistake  during 
implementation  of  UNZIP,  you  get  to  see  a  menu  of  "options"  that 
you  can  (should)  select  from. 

If  you  are  like  me,  you  will  find  the  abbreviated  "sample" 
syntax  that  seem  prevalent  to  be  cryptic.  This  is  partially 
alleviated  by  Paul  Holmgren's  addendum  in  the  Unzip_txt  that 
accompanies  the  program;  but,  it  took  me  a  few  tries  to  realize 
that  Paul  had  created  a  SUB-DIRectory  on  his  harddrive  ( " . . .  where 
I  keep  the  unzip  file"). 

Being  the  dense  one,  it  seemed  to  me  that  the  only  way  I  would 
be  able  to  "remember"  how  to  unzip  a  program  was  if  I  nested  the 
program's      function      within      another.  Hence,  A-DEE-DOO-DAH 

(DooDah_Bas  is  how  I  actually  SAVE  it)  is  a  SuperBASIC  front-end 
to  implement  the  UNZIP  program  from  a  single-key  select  menu. 

Because  this  implementation  was  "carved"  from  a  version  of 
QLUTter's  SuperBASIC  source,  it  has  A  LOT  OF  EXTRA  BAGGAGE  in  its 
program  LISTing.  The  EXTRA  BAGGAGE  means  that  there  are  some 
end-user  conveniences;  but,  sub-directories  are  not  one  of  them. 

The  DooDah_Bas  program  can  be  used  as  the  basis  for  almost  any 

other   simple    "utility"   that   you  might  wish  to   implement   —  the 

core    of    the    program    is    in    the  DEFined    PROCedure    named  "MAIN" 

(Lines  610  to  710) . 

Line  700  is  the  active  line.  This  is  a  "straight"  UNZIP' ing 
which  does  NOT  implement  any  of  the  options  —  this  took  some 
trial  and  error  on  my  part,  and  there  is  probably  a  more  elegant 
way  to  implement  it.  Note  especially  that  there  is  a  set  of 
double  quotes  after  the  semi -colon  that  separates  the  command  from 
the  filename  where  you  may  wish  to  insert  an  option. 

DATA_USE  (Line  140)  is  a  TK2_EXTension  the  last  time  I  looked. 
While  your  disk  interface  probably  has  TK2_EXTensions ,  this  is  an 
optional  line.  Paul  Holmgren  suggests  using  RAM1_  as  a 
destination,  and  I  agree  as  it  will  expedite  the  UNZIPping 
process . 

Since  I  don't  have  the  ZIP  portion  of  the  utility  (there  must 
be  one,  right?),  this  is  theoretically  only  "half"  the  utility. 
Still,  I  think  that  you  will  find  it  worthwhile  to  INPUT  and  SAVE 
if  you  use  UNZIP  with  any  frequency  (more  so  if  used  only 
ocassionally) . 

UNZIP  should  be  in  the  public  domain.  Check  with  someone  in 
your  user  group. 

HAPPY  TRAILS,   AND  COMPUTING,   TO  YOU   


2 


ii- 

WANTED,   FOR  SALE,   AND  SHORT  NEWSCLIPS 

A)  Sorry,  but  no  Editorial  for  this  issue,  nothing  to  harp  on,  or 
ax  to  grind. 

B)  Extra,  extra,  for  all  of  those  who  have  wished  to  use  a  fax 
modem  on  your  QL,  the  software  is  on  its  way.  It  is  being  Beta-tested 
now  by  the  two  authors.  One  version  will  be  for  Class  1  fax  modems, 
and  the  other  for  Class  2  fax  modems.  This  will  be  as  shareware  or 
public  domain.  Stay  tuned,  or  check  with  us  in  March  or  April  for  more 
news  about  this... such  as  how  and  where  to  get  it.  This  will  add  a 
whole  new  dimension  to  your  use  of  the  QL.  I  highly  recommend  that  if 
you  wish  to  do  this,  then  you  should  obtain  the  Hermes  co-processor 
for  your  computer  from  either  T  F  Services  or  Mechanical  Affinity. 

C)  Pardon  the  lateness  of  this  issue;  it  has  been  the  cold  and  flu 
season  here  in  Indiana,  as  well  as  doing  without  the  assistance  of 
Eliad  on  this  issue.  Short  handed  and  feeling  out  of  sorts.  Will  be 
more  on  track  next  issue. 

D)  News  from  Taylor  Penrose  of  Jupiter,  Florida  is  that  he  is 
trying  to  start  a  QL  BBS  near  the  first  of  this  year.  Hours  of 
operation  will  be  0100  to  1400,  or  as  posted.  VTIOO  Terminal 
Emulation,   300  to  2400  BAUD,  No  Parity.  The  number  will  be  1-800-942- 
6721.  At  the  moment  he  would  like  to  limit  it  to  text  (if  it  works  out 
perhaps  the  users  can  talk  him  into  adding  uploads  and  downloads).  It 
will  be  running  on  his  IBM  clone,  and  his  1-800  covers  North  America 
and  Puerto  Rico. 

E)  AVAILABLE!  Have  you  bought  a  copy  of  an  Issue  Disk  from  the 
following  authors,  perhaps  awhile  back?  Well... we  here  at  UPDATE!  have 
had  upgrades  on  these  programs  over  the  last  year  or  so.  Some  of  them 
are  quite  significant  upgrades!  If  they  are  written  by  Al  Feng,  Bill 
Cable,  or  Bob  Hartung,  or  the  QL  Compendium,  then  either  return  the 
original  disk  with  $3,  or  proof  of  purchase  and  $4,  to  either  the 
author  or  UPDATE!  Magazine.  It  can  often  pay  to  have  the  latest 
version  due  to  added  features  as  well  as  any  bug  correction  and 
interface  changes. 

F)  How  about  those  of  you  who  like  to  mess  around  with  code  and 
languages  on  your  QL  get  some  contributions  off  to  the  QL  HACKER'S 
JOURNAL,  in  care  of  its  fine  editor,  Tim  Swenson,  5615  Botkins  Rd, 
Huber  Heights,  Ohio  45424. 

G)  WANTED:  One  TS2050  modem  for  A.F.R.  Software,  at  1605 
Pennsylvania  Ave.  #204,  Miami  Beach,  Florida  33139,  phone  305-531- 
6464.  Help  Al  out  folks. 

H)  FOR  SALE:  Complete  TS2068  computer  system  that  includes 
computer  with  Roraswitch,  Aerco  printer  Interface,  color  Magnavox 
monitor,  Larken  disk  drive  system,  disk  drives,  A  &  J  Microdrive,  2050 
modem,  software  and  books.  Contact  Keith  Worrell,  with  SASE  for 
complete  list,  at  Box  173  RRl ,  Lakeview  Dr.,  North  Hero,  VT,  05474.  If 
not  sold  may  be  trashed.  Sounds  like  a  good  system,  so  how  about  some 
of  you  readers  helping  Keith  out. 


3 


'     RMG  ' 
ENTERPRISES 

Supports 
Sinclair/Timex 
Users! 

Send  le^a]  3.A.3.E.  with  request  for  price 
sheet.  Specift'  model  interest.  Send  $4  Ajr 
GIANT  GIFT  catalog.  (Includes  ALL  price 
lists)  Phone  or  FAX  for  inforntation  on 
prices  and  availability. 
Nail  to: 

14784  South  Quail  Grove  Circle 
Oregon  City,  OR  97045 
503/655-7484  *  FAX  503/655-4116 


Fix    the  ZX-81/TS10Q0 
Loose    Jack  Problem 

by  Bill  Harmer 

The  three  jacks  on  the  side  of 
this  computer  that  accept  MIC, 
ear  and  power  plugs  are  of  a 
somewhat  flimsy  construction 
that  may  become  apparent  after 
a  few  years  of  use  (or  earlier 
on  rough  usage)  .  The  cure  is 
fortunately  rather  simple  for 
the  mechanically/electronically 
handy  user  or  technician. 

Step  1  -  Take  the  bottom  half 
of  the  case  off  (without 
removing  the  printed  circuit 
board  inside  or  the  keyboard 
membrane  plastic  sheet  at  this 
time)  There  are  5  screws  that 
must  be  removed  from  the  bottom 
of  the  case.  This  is  not  as 
easy  as  it  might  seem  as  only  2 
are  visible.  The  other  three 
are  found  under  the  rubber  feet 
(rectangular  strips  glued  on 
the  rear  corners) .  These  can  be 
simply  pulled  off  in  order  to 
remove  the  screws  under  them. 
Once  the  screws  are  completely 
removed,  the  bottom  half  of  the 
plastic  case  should  separate 
with  only  light  prying.  Any 
force  indicates  that  the  screws 
are  not  completely  removed. 

Step  2  -  The  printed  circuit 
board  is  now  secured  to  the  top 
half  of  the  plastic  case  by  two 
screws.  See  where  they  are 
(upper  to  mid-left  near  the  RAM 
pack  opening  and  near  the 
center,  more  towards  the  middle 
of  the  case,  typically) .  For 
reassembly,  note  where  they 
came  from,  with  a  soft  pen, 
say) .  The  printed  circuit  board 
must  be  moved  up  and  away  from 
the  top  half  of  the  case  about 
one  or  two  inches  only  (so  as 
not  to  disconnect  or  damage  the 
fragile  keyboard  matrix/ 
membrane  plastic  from  the 
connector  on  the  board) . 

Step  3  -  Holding  the  printed 
circuit  board  so  that  one  can 
see  the  three  little  plastic 
boxes  that  house  the  jacks,  any 


prongs  that  are  bent  too  far  up 
and  out,  may  be  carefully 
pushed  back  into  position  with 
a  small  screwdriver  or  tooth- 
pick. Several  pushes  back  may 
be  necessary  until  the 
springiness  is  overcome  in  its 
attempt  to  reposition  the  prong 
outwards.  Now  test  the  jacks 
with  the  cable  for  the  cassette 
recorder  (no  power  applied)  for 
mechanical  fit. 

Step  4  -  Now  you  are  ready  to 
reassemble  the  computer  making 
sure  that  the  screws  for  the 
printed  circuit  board  are  not 
inserted  in  the  holes  meant  for 
the  screws  that  hold  the 
outside  bottom  shell  of  the 
case.  If  you  put  one  or  both  of 
the  set  screws  in  the  wrong 
place,  the  screws  will  not  go 
in  when  you  try  to  screw  the 
back  on  again  and  all  the 
screws  on  the  outside  will  have 
to  be  removed  and  the  bottom 
taken  off  again  to  find  the 
source  of  the  problem.  Do  not 
disconnect  the  little  metal  bar 
or  whatever;  that  ground 
contact  with  the  metallic  paint 
inside  the  case  that  provides 
some  measure  of  protection  from 
RFI  for  the  TV.  etc.  on  VHP 
models  of  the  computer. 

Step  5  -  Once  the  printed 
circuit  board  is  secured  inside 
the  case  with  its  two  screws 
and  the  bottom  of  the  case 
secured  with  its  five  screws 
and  the  little  rubber  feet  or 
runners  stuck  back  on,  you  are 
ready  to  test  the  computer  to 
see  if  the  original  problem  is 
fixed  (and  no  new  ones  added) . 
Note  that  loose  power  jack  into 
the  computer  can  also  cause  the 
save/load  crashes  and  some 
users  have  either  tightened  up 
that  jack  too,  or  replaced  it 
with  hardwiring  the  power 
supply  wire  to  the  P.C.B.  and 
adding  some  safety  device  like 
a  switch  on  the  power  line  or 
pilot  light  (standard  LED  and 
1/2  watt,  IK  ohm  for  example) 
to  make  sure  it  is  not  left  on. 


5 


20e8     BLOCK— MOVE  ERROR 
—  Bob  Hartung  — 

My  face  was  red  when  I  opened  the  fall 
issue  of  UPDATE  and  saw  I  had  transposed 
two  digits  in  the  number  of  bytes  in  a 
full-screen  display  of  DFILE1 .  Anyone  who 
has  read  Appendix  C  of  the  User  Manual 
knows  the  display  file  plus  the  attribute 
file  includes  a  total  of  6912  bytes,  as 
shown  in  the  correction  of  line  40  below. 
The  original  listing  will  work  in  black 
and  white  but  will  not  transfer  colors 
because  it  does  not  address  the  attribute 
file.  My  disk  drive  system  died  on  me  as 
I  was  doing  the  article  for  UPDATE  and  so 
I  lost  the  listing  I  sent  in  until  it 
appeared  in  print.  Sorry! 

40  IF  k$="1"  THEN  LET  STP=1638 
4:  LET  INS=INT  (STP/256):  LET  NO 
B=6912;  LET  INB=INT  (NOB/256):  6 
0  TO  80 


The    Ultimate  AUTOSTART 

by  Bob  Swoger 

In  the  January  1993  Update! 
Magazine  page  20,  Peter  Hyman 
gave  a  good  clue  to  writing  a 
better  AUTOSTART  program  for 
the  LarKen  disk  system.  Like 
Peter,  I  have  seen  AUTOSTARTS 
that  use  two  tracks.  They  are 
usually  made  from  another 
program  on  the  disk,  sometimes 
called  Menu.Bl.  Menu.Bl  is 
provided  to  allow  changes  to 
the  AUTOSTART  program  and  is, 
therefore,  identical  to  it. 
Three  tracks  on  the  disk  now 
contain  the  same  program! 

AUTOSTART  programs  instruct  the 
computer  what  to  do  when  the 
machine  is  turned  ON  with  the 
ENTER  key  held  down  or  when  the 
RAND  USR  100:  NEW  sequence  is 
typed  in  on  either  the  TS2068 


or  SPECTRUM  systems.  Here  are  a 
few  simple  rules: 

RULE    1   The    ULTIMATE  AUTOSTART 

should  do  little  more  than 
reset  RAMTOP,  call  another 
program  from  the  disk  (LOAD  the 
program  and  RUN  it)  and  save 
itself  to  that  disk. 

RULE  2  The  ULTIMATE  AUTOSTART 
should  be  5089  bytes  long. 
Using  the  CHAMBERS  UTILITIES 
disk,  you  will  find  that  an 
AUTOSTART  made  in  both  the 
TS2068  mode  and  the  SPECTRUM 
mode  will  always  start  at 
address  22490  and  contain  5089 
bytes. 

RULE  3  The  ULTIMATE  CLEAR 
number  for  both  TS2068  and 
SPECTRUM  is  27577.  One  need  not 
execute  the  PRINT  65536-FREE 
misprinted  in  the  UPDATE! 
article  to  find  the  lowest 
point  to  move  RAMTOP,  just  use 
27577  instead.  The  area  saved 
will  always  be  one  track  long, 
5090-1  bytes. 

Since  many  menu  programs  are 
too  long  to  fit  on  a  single 
track  as  an  AUTOSTART  SAVE  in 
the  TS2068  mode,  (SPECTRUM 
gives  us  2955  bytes  more)  I 
submit  the  following  subprogram 
that  could  be  included  in  any 
menu  program  to  create 
AUTOSTART,  Since  this  is  the 
AUTOSTART  program  included 
within  the  lines  of  the 
LogiCall  program,  it  is 
numbered  accordingly: 

49  LET  H=CODE  "d" :  LET  Z=PEEK ( 
PI+PI)=CODE  "1" 

110  GO  TO  VAL  "460-(30*Z)" 

400  CLEAR  VAL  "65367" 

410  REM  RANDOMIZE  USR  CODE  "d" 
:  OPEN  #  VAL  "4","dd" 

420  RANDOMIZE  USR  CODE  "d" :  LO 
AD  "L.Bl" 

430  DELETE  RND,VAL  "399" 

440  DELETE  VAL  "461", VAL"9999 

450  DELETE  VAL  "421", VAL"459" 

460  CLEAR  VAL  "27577": 
RANDOMIZE  USR  CODE  "f":  GO  TO  V 
AL  "400" 

In  line  49,  H  is  assigned  the 
value    100   to   save    RAM  space 


6 


when  subsequent  needs  for  the 
value  100  are  needed.  The  heavy 
use  of  VAL  and  CODE  is  to  save 
RAM  space  and  will  be  explained 
later  in  this  article. 

LET  Z  =  PEEK  (PI+PI)  =  CODE  "1" 
reduces  down  to  LET  Z  =  (PEEK  6 
=  49)  assigning  Z  the  value  1 
if  the  software  finds  itself 
running  on  the  TS2068  and  0  if 
running  on  the  SPECTRUM. 
EXPLANATION:  If  the  TS2068  ROM 
is  operating  the  system,  byte  6 
hold  the  value  49.  The  SPECTRUM 
ROM  holds  203.  Therefore,  if 
the  TS2068  ROM  is  operating, 
the  boolean  operator  (PEEK 
6=49)  will  be  true  and  Z  will 
equal  1.  If  the  SPECTRUM  ROM  is 
operating,  the  boolean  operator 
(PEEK  6=49)  will  be  false  and  Z 
will  equal  0. 

Line  110  bypasses  lines  430  to 
450  in  the  Spec'y  mode  thus 
avoiding  a  crash  since  the 
SPECTRUM  does  not  have  a  delete 
command. 

Line  400  sets  RAM  TOP  to  a 
place  compatible  to  fonts  and 
other  favorite  machine  code. 
You  may  choose  any  other  number 
you  like  up  to  65535. 

Line  410  is  included  in  case 
one  MUST  open  stream/channel  4. 
Since  opening  stream/channel  4 
conflicts  with  ZEBRA  Talkers 
and  eats  up  precious  RAM  space, 
it  is  REMarked  out.  Opening 
stream/channel  4  really  has  no 
added  programming  value  in  most 
cases.  Just  edit  REM  out  if  you 
need  to  open  stream/channel  4 . 

Line  420  calls  the  start-up 
program. 

Lines  430  to  450  delete  all  un- 
needed  lines  on  the  TS2068  from 
the  program  which  contained 
this  AUTOSTART  sub-program  thus 
keeping  the  required  space  to 
one  track.  This  is  not  required 
on  the  SPECTRUM  because:  1)  not 
having  a  DELETE  command  in  its 
vocabulary  it  can't  delete 
lines!  and  2)  SPECTRUM  gives  us 
2955  more  bytes  of  program 
space  on  an  AUTOSTART  save. 


Finally,  line  460  sets  RAM  TOP 
to  the  ULTIMATE  value  which 
will  save  exactly  5089  bytes, 
exactly  the  size  of  one  LarKen 
track,  the  AUTOSTART  save 
routine  is  called,  and  400  is 
given  to  the  AUTOSTART  header 
as  the  line  to  auto  RUN  once 
this  program  is  loaded. 

To  use  this  sub-program,  simply 
merge  it  into  your  favorite 
menu  program  using  the 
appropriate  re-numbering  of  the 
statements  and  cause  some 
keyboard  action  to  send  it  to 
the  beginning  statement  of  this 
sub-program.  If  you  use  it  as  a 
stand  alone  program,  the  DELETE 
statements  can  probably  be 
removed.  When  the  sub-program 
is  executed,  the  NMI  tone  will 
sound  and  you  will  either  have 
to  press  the  'D'  key  to 
continue  the  save  to  disk  or 
the  'A'  key  to  interrupt  the 
program  to  change  'L.Bl'  to 
'Menu. HI'  in  line  420  if  you 
want  to  call  Menu.Bl  instead  of 
LogiCall  when  you  boot  the 
disk.  Next  type  GOTO  460 
<ENTER>  and  'D'  after  the  tone 
to  save  the  modified  AUTOSTART. 

My  concern,  however,  is  that 
you  have  not  yet  discovered 
LogiCall!  Many  folks  who  now 
use  LogiCall  have  discovered 
that  without  it  on  every  disk, 
LKDOS  is  a  'NAKED'  system  which 
requires  you  to  do  a  lot  of 
typing  (i.e.  RAND  USR  100:  GOTO 
1:  RAND  USR  100:  LOAD 
"filenm.Bl"  as  an  example  of 
LOADing  "filenm.Bl"  on  drive 
1).  LogiCall  creates  the 
ULTIMATE  AUTOSTART  for  you 
simply  by  pressing  the  'A'  key 
<ENTER>  and  'D'  at  the 
'Program?'  prompt.  Get  and  use 
LogiCall ! 

Because  the  AUTOSTART  programs 
others  have  written  often  use 
two  tracks,  I  have  usually  been 
able  to  find  room  on  even  a 
full  disk  to  add  LogiCall 
(L.Bl)  by  using  LogiCall 's 
embedded  AUTOSTART  program  to 
call  the  other  person's  Menu.Bl 
program  on  boot-up  and  the  disk 
still  works  the  way  it  did 
before  I  added  LogiCall ! 


A)eCHAMICAl 
AFFIWITV 

513  eAST  i^AIM  ST.     OK    5231  VILTOW  VQOP  CT 
1>eKU  IM  46970  IMPIAHATQLI6  Ifi  46354 

317    473    e031  317  291  6002 


Brin^^ing  the  very  best  to  you  in  SINCLAIR  software  and 
hardware  from  around  the  world.  We  want  to  provide 
service  to  you  the  customer.  Meed  something,  give  us  a 
call.  Mal<^e  all  checks  or  money  orders  out  to  either  Frank 
Davis  or  Paul  Holmgren  .  Thanks?  Payment  in  US$. 
SPECIALS  GOOD  TILL  CURRENT  SUPPLY  EXHAUSTED 


MAfrNAYQX  BCP  MONITORS  -These  80  column  monitors  contain  RGB,  Composite  video, 
and  can  also  accept  a  VCR  hoolcup  to  play  movies  on.  They  have  built-in  sound,  and 
with  the  flicic  of  a  switch  can  give  you  a  green  mono  screen.  They  are  ideal  for  the  QL, 
Spectrum  or  TS2068  (even  for  the  ZX81  if  you  have  fixed  it  for  monitor  input).  They  are 
offered  for  $125  IIS$,  and  this  includes  shipping. 


TIMRX  SiNtLAiB  CTMPirTHtf -  Color  computer  that  works  with  monitor  or  with 
TV,  with  power  supply  and  monitor,  as  well  as  composite  cable  and  tape  recorder 
cables...plus  we  throw  in  two  TS2068  tape  programs  as  a  bonus.  All  of  this  for  only  $50 
and  this  includes  shipping.  Supply  is  limited. 

TOM  BKl^  INCREDIBLfc  RFyi^CEMEWT  ROM  FOR  THE  TSIOOQ  The  ideal  upgrade  for 
your  ZX81  or  TSIOOO  to  improve  readability  of  some  cliaracters,  correct  bugs,  and 
improve  matli  functions.  This  requires  you  to  open  your  case,  so  only  attempt  this  if 
you  are  a  tinkerer,  or  have  a  friend  who  is  familiar  with  electronic  hardware.  We  are 
including  one  free  TSIOOO  program  tape  with  each  ROM  kit.  This  is  available  for  $12. 

PRINTKR  SIIPPIJKS — For  a  limited  time  we  have  (a)  boxes  of  Olivetti  InkJet  Ampules 
selling  at  $5  per  box,  each  box  contains  4  Inkjet  cartridges;  (b)  replacement  ribbons  for 
the  Okimate  20.  The  black  ribbons  are  $4,  and  the  color  ribbons  are  $5.  At  these  prices  it 
is  a  good  idea  to  stock  up  while  you  can. 

PAPiai  TOR  THiiRMAL  PRINTEBS    stock  up  on  paper  for  this  great  little  dot 

matrix  printer  while  we  still  have  a  good  supply.  We  are  offering  it  for  $5  a  roll  or 
three  rolls  for  $10.  This  includes  shipping.  We  also  have  TS2040  printers  for  $25  which 
also  includes  shipping.  These  are  still  great  printers  for  your  TSIOOO,  TS2068  or  TS1500 
and  are  the  best  printers  to  use  to  do  listings. 


Frank , 


This  is  an  assembly  language  program  to  copy  T/S  2068 
screens  to  an  EPSON  compatible  24  pin  printer.  The  program 
resides  in  the  printer  buffer  area  of  system  RAM  and 
it  can  copy  screens  in  either  the  normal  32  column  mode 
or  the  expanded  64  column  mode.  It  is  presently  tailored 
for  the  EPSON  LQ-510  printer  which  I  am  presently  using, 
but  the  ESC  codes  should  be  compatible  with  virtually 
all  24  pin  printers  with  EPSON  graphics  compatibility. 
The  program  contains  its  own  printer  handler  to  avoid 
the  necessity  of  having  to  patch  any  other  resident  handlers 
to  accept  non-ASCII  codes.  My  present  printer  port  is 
an  AERCO  interface  residing  at  port  address  127    (7FH)  . 

An  assembly  code  listing  is  included.  The  program  operates 
in  the  32  column  screen  copy  mode  as  listed.  To  convert 
to  the  64  column  mode,  it  is  necessary  to  POKE  4  locations 
within  the  code.  These  locations  are: 


ADDRESS  FOR  64  COL.  MODE     FOR  3  2  COL.  MODE 

23366    (5B46H)  2  3 

23474  (5BB2H)  0  24 

23475  {5BB3H)  0  15 
23545    (5BF9H)  4  3 


For  the  32  column  mode,  each  of  the  screen  pixels  is 
output  in  a  3X3  dot  expansion  to  the  printer.  Since  the 
printer  is  :  conditioned  for  a  graphics  mode  operation 
of  180  dots/inch  vertical  and  180  dots/inch  horizontal, 
this  results  in  a  display  of  60  pixels/inch  in  both  direc- 
tions. Since  there  are  twice  as  many  bytes  output  per 
line  in  the  64  column  mode,  the  resolution  is  changed 
to  3  dots/pixel  in  the  vertical  direction  and  2  dots/pixel 
in  the  horizontal  direction.  There  are  a  total  of  3  ESC 
code  sequences  in  the  program.  The  first  is  at  address 
23534  (5BEEH) .  This  sequences  the  graphics  mode  vertical 
spacing  to  180  dots/inch.  The  second  ESC  sequence  is 
at  23540  {5BF4H)  .  This  sequence  sets  up  the  output  format 
for  one  line  of  graphics  code  to  768  vertical  columns/ 
line  in  the  32  character  mode  and  1024  vertical  columns/ 
line  in  the  64  character  mode,  since  there  are  512  pixels/ 
line  in  this  mode.  The  third  ESC  sequence  starts  at  23548 
(5BFCH)  and  this  restores  the  normal  printer  vertical 
dimensions  after  the  screen  dump  is  complete.  Several 
spare  bytes  have  been  incorporated  into  each  table  to 
allow  for  patching  of  these  tables  if  non-EPSON  compatible 
printers  are  used.  The  first  entry  in  each  table  must 
be  the  number  of  characters  to  be  sent  to  the  printer 
in  the  ESC  sequence. 

If  a  printer  interface  not  using  port  address  127  (7FH) 
is  used,  it  will  be  necessary  to  patch  a  total  of  3  loc- 
ations    with     the     correct     port     address.     These  addresses 


9 


are   23521    (5BE1H) ,    23528    (5BE8H),   and  23530  (5BEAH). 


I  am  supplying  you  with  a  disk  containing  both  the  32 
column  and  64  column  versions  of  the  program.  You  will 
also  find  samples  of  both  types  of  screen  copys.  The 
program  is  entered  with  a  RAND  USR  23296  command. 

Best  regards, 

Charles  G.    (Chuck)  Bothner 


This  is  a  demonstration  of  the  64  character  per  line  screen  dump 

program.  The  foUowing  are  filler  characters  to  put  more  data 
on  the  screen.  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXThiS  is  a  demons 
tration  of  the  64  character  per  line  screen  dump  program.  The  fo 
llouiing  are  filler  characters  to  put  more  data    on  the  screen. 

XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 

xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 


29  I  3£j  I  I  iLl  L 

10    DRY    OUTDOOR  TEMP. 


UED-OCT    20,     1993   T IME = 12 : 15 : 10 

This  32  column  screen  dump  is  data  from  my 
2068  data  gathering  program  for  a  Heathkit 
Weather  Computer  Interface. 

1 0 


"CPYPRT.Cl"  code  for  screen  dumps  to  24  pin  printers. 


5B00 

ENTR: 

E5 

PUSH  HL 

;save  registers 

5B01 

D5 

PUSH  DE 

5B02 

C5 

PUSH  BC 

5B03 

CD225B 

CALL  OUTP 

;set  up  vert. spacing  on  printer 

5B06 

210040 

LD  HL,4000 

; start  addr.  of  disp. block  0 

5B09 

CD365B 

CALL  OUTB 

;output  1  block  of  display  data 

5B0C 

210048 

LD  HL,4800 

; start  addr.   of  block  1 

5B0F 

CD365B 

CALL  OUTB 

; output  block  1  data 

5B12 

210050 

LD  HL,5  00  0 

; start  addr.   of  block  2 

5B15 

CD365B 

CALL  OUTB 

;output  last  screen  block 

2 1 FC  5B 

T  n     UTT      D  T?  C  Ti 

LiU   nij  ,  KIjO  i 

;set  up  for  normal  printer  space 

5B1B 

CD255B 

CALL  AA 

; output  the  ESC  sequence 

5B1E 

CI 

POP  BC 

; restore  regs. 

5B1F 

Dl 

POP  DE 

5B20 

El 

POP  HL 

5B21 

C9 

RET 

;  done 

5B22 

OUTP  : 

21EE5B 

LD  HL,SETV 

; addr. of  printer  vert . spc . table 

5B25 

AA: 

C5 

PUSH  BC 

;save  regs. 

5B26 

3E0A 

LD  A, OA 

;send  LF  for  new  line 

5B28 

CDD65B 

CALL  OTPR 

5B2B 

7E 

LD  A, (HL) 

;get  #  of  chars. to  be  output 

5B2C 

47 

LD  B,A 

; store  in  B  reg. 

5B2D 

BB  : 

2  3 

INC  HL 

; point  to  next  character 

5B2E 

7E 

LD  A, (HL) 

;get  next  char. 

5B2F 

CDD65B 

CALL  OTPR 

; send  it  to  printer 

5B32 

10F9 

DJNZ,  BB 

;continue  until  done 

5B34 

CI 

POP  BC 

/•restore  regs. 

5B35 

C9 

RET 

;  done 

5B36 

OUTB: 

0608 

LD  B,08 

;8  lines/block 

5B38 

CC: 

0E20 

LD  C,20 

;32  chars. /line 

5B3A 

E5 

PUSH  HL 

; save  the  address 

5B3B 

21F45B 

LD  HL^OTFM 

; graphics  setup  for  1  line 

5B3E 

CD255B 

CALL  AA 

; output  the  ESC  sequence 

5B41 

El 

POP  HL 

; restore  address 

5B42 

DD  : 

C5 

PUSH  BC 

; save  char.&   line  counters 

5B43 

EE  : 

1680 

LD  D,8  0 

;[nask  bit  for  horiz.scan  byte 

5B45 

FF: 

3E03 

LD  A, 03 

;3  horiz.bits  per  pixel 

5B47 

GG: 

F5 

PUSH  AF 

;save  the  count 

5B48 

lEOO 

LD  E,00 

;clear  the  storage  reg. 

5B4A 

E5 

PUSH  HL 

;save  the  address 

5B4B 

7E 

LD  A, (HL) 

;get  the  byte  &  test  pixel 

5B4C 

A2 

AND  A,D 

;               for  ink  or  paper 

5B4D 

2802 

JR  Z,HH 

;jump  if  its  paper 

5B4F 

lEEO 

LD  E,EO 

;if  ink, set  3  upper  bits 

5B51 

HH: 

CDCF5B 

CALL  GTNX 

;get  next  line  of  char. 

5B54 

2804 

JR  Z,II 

/•jump  if  pixel  =  0 

5B56 

7B 

LD  A,E 

;get  the  partial  data  byte 

5B57 

C61C 

ADD  A,1C 

;add  next  3  bits 

5B59 

5F 

LD  E,A 

; store  the  partial  result 

5B5A 

II  : 

CDCF5B 

CALL  GTNX 

;get  next  line  of  char. 

5B5D 

2804 

JR  Z,JJ 

;jump  if  pixel=0 

5B5F 

7B 

LD  A,E 

;get  partial  data  byte 

1 1 


"CPYPRT.Cl"  code  for  screen  dumps  to  24  pin  printers  (Cont.) 


5B60 

C603 

ADD  A, 03 

;set  the   last  2  bits 

5B62 

5F 

LD  E  ,  A 

; store  completed  data  byte 

5B63 

J  J  : 

7B 

LD  A,E 

;get  the  first  of  3  bytes/col. 

5B64 

CDD65B 

CALL  OTPR 

;sent  it  to  printer 

5B6  7 

CB43 

BIT  0,E 

;see  if  LSB  was  set  on  last  byte 

5B69 

lEOO 

LD  E,00 

;clear  the  storage  register 

5B6B 

2802 

JR  Z,KK 

;jump  if  the  LSB=0 

5B6D 

1E80 

LD  E,8  0 

•set  MSB  in  next  byte 

5B6F 

KK  : 

CDCF5B 

CALL  GTNX 

•get  next  line  of  character 

5B72 

2804 

JR  Z,LL 

•jump  if  the  pixel=0 

5B74 

7B 

LD  A,E 

•get  the  partial  data  byte 

5B75 

C670 

ADD  A, 70 

•set  the  next  3  bits 

5B77 

5F 

LD  E,A 

•store  partial  data  byte 

5B78 

LL: 

CDCF5B 

CALL  GTNX 

■get  next  line  of  character 

5B7B 

2804 

JR  Z,MM 

•jump  if  pixel^O 

5B7D 

7B 

LD  A,E 

-get  partial  data  byte 

5B7E 

C60E 

ADD  A,0E 

set  the  next  3  bits 

5B80 

5F 

LD  E,A 

•store  partial  data  byte 

5B81 

MM: 

CDCF5B 

CALL  GTNX 

•get  next  line  of  character 

5B84 

2801 

JR  Z , NN 

jump  if  pixel=0 

5B86 

IC 

INC  E 

set  LSB  otherwise 

5B87 

NN : 

7B 

LD  A,E 

get  completed  data  byte 

5B88 

CDD65B 

CALL  OTPR 

send  it  to  printer 

5B8B 

CB43 

BIT   0  ,  E 

test  LSB  of  last  byte 

5B8D 

lEOO 

LD  E,00 

clear  the  storage  register 

5B8F 

2802 

JR  Z,00 

jump  if  the  LSB=0 

5B91 

lECO 

LD  E,CO 

set  2  highest  bits  otherwise 

5B93 

00  : 

CDCF5B 

CALL  GTNX 

get  next  line  of  character 

5B96 

2804 

JR  Z,PP 

jump  if  pixel=0 

5B98 

7B 

LD  A,E 

store  partial  data  byte 

5B99 

C638 

ADD  A, 3  8 

set  next  3  bits 

5B9B 

5F 

LD  E,A 

store  the  byte  again 

5B9C 

PP: 

CDCF5B 

CALL  GTNX 

get  last  line  of  character 

5B9F 

2804 

JR  Z ,QQ 

jump  if  pixel=0 

5BA1 

7B 

LD  A,E 

get  partial  data  byte 

5BA2 

C607 

ADD  A, 07 

set  the  last  3  bits 

5BA4 

5F 

LD  E,A 

store  completed  data  byte 

5BA5 

QQ: 

7B 

LD  A,E  , 

get  completed  byte 

5BA6 

CDD65B 

CALL  OTPR  , 

sent  it  to  printer 

5BA9 

El 

POP  HL  , 

restore  original  disp.file  addr 

5BAA 

Fl 

POP  AF  ; 

restore  bit  counter 

5BAB 

3D 

DEC  A  ; 

decrement  counter 

5BAC 

2099 

JRNZ, GG  ; 

send  3  sets  of  same  bytes 

5BAE 

CB3A 

SRL  D 

shift  bit  mask 

5BB0 

3093 

JR  NC,FF  ; 

cont. until  char,   is  complete 

5BB2 

180F 

JR,SS  ; 

jump  if   32  character  mode 

5BB4 

7C 

LD  A,H  ; 

get  upper  byte  of  address 

5BB5 

FE5A 

CP  A,5A  ; 

test  location  of  address 

5BB7 

3006 

JR  NC,RR  ; 

jump  if  not  chunk  2 

5BB9 

3E20 

LD  A,2  0  ; 

offset  to  2nd  display  file 

5BBB 

8  4 

ADD  A,H  ; 

point  to  addr.   in  chunk  3 

5BBC 

67 

LD  H,A  ; 

5BBD 

1884 

JR,EE  ; 

dump  same  char,  pos.from  file  2 

5BBF 

RR: 

7C 

LD  A,H              ;get  high  byte  of  address 

1  2 


CPYPRT.Cl"   code  for  screen  dumps  to  24  pin  printers  (Cont.) 


5BC0 

D620 

SUB  A, 20 

; convert  back  to  chunk  2  addr. 

5BC2 

67 

LD  H,A 

5BC3 

SS 

23 

INC  HL 

;bump  character  address 

5BC4 

CI 

POP  BC 

;get  line  &  char,  counters 

5BC5 

OD 

DEC  C 

; decrement  character  count 

5BC6 

C2425B 

JP  NZ,DD 

;cont.   until  done  with  32  or  64 

5BC9 

1001 

DJNZ ,TT 

;cont.    for  all   lines   in  block 

5BCB 

C9 

RET 

;done  with  display  block 

5BCC 

TT 

C3385B 

JP  CC 

;do  next  line  in  block 

5BCF 

GTNX 

010001 

LD  BCOlOO 

;256  byte  offset  to  next  line 

5BD2 

09 

ADD  HL,BC 

; update  address  pointer 

5BD3 

7E 

LD  A, (HL) 

;get  the  pixel  byte 

5BD4 

A2 

AND  A,D 

;test  designated  pixel 

5BD5 

C9 

RET 

; return  with  Z  bit  status 

5BD6 

OTPR 

F5 

PUSH  AF 

;save  registers 

5BD7 

C5 

PUSH  BC 

5BD8 

4F 

LD  C,A 

; save  the  char,   in  C  reg. 

5BD9 

uu 

CD0920 

CALL   2  00  9 

;test  for  BREAK 

5BDC 

3802 

JR  C,VV 

;jump  if  no  BREAK 

5BDE 

CF 

RST  08 

; return  with  BREAK  message 

5BDF 

14 

DEFB 

5BE0 

vv. 

DB7F 

IN  A,  (7F) 

;read  printer  port 

5BE2 

CB67 

BIT   4, A 

;test  BUSY  bit 

5BE4 

20F3 

JR  NZ , UU 

; loop  back  if  BUSY 

5BE6 

79 

LD  A ,  C 

•get  character  back 

5BE7 

D37F 

OUT    (7F)  ,A 

;send  it  to  printer 

5BE9 

DB7F 

IN  A,  (7F) 

? reset  AERCO  port 

5BEB 

CI 

POP  BC 

•restore  registers 

5BEC 

Fl 

POP  AF 

5BED 

C9 

RET 

•  done 

5BEE 

SETV: 

03 

DEFB 

•3  chars,   to  be  output 

5BEF 

IB 

DEFB 

•ESC  char. 

5BF0 

2B 

DEFB 

•"+"set  graphics  mode 

5BF1 

30 

DEFB 

to  180  dots/inch  vertical 

5BF2 

FF 

DEFB 

•spare  bytes 

5BF3 

FF 

DEFB 

5BF4 

OTFM  : 

05 

DEFB 

5  chars,   to  be  output 

5BF5 

IB 

DEFB 

ESC  char. 

5BF6 

2  A 

DEFB 

"*"set   for  180  dots/inch  horiz. 

5BF7 

27 

DEFB 

768  vert. columns  per  line 

5BF8 

00 

DEFB 

lo  byte 

5BF9 

03 

DEFB 

hi  byte 

5BFA 

FF 

DEFB 

spare  bytes 

5BFB 

FF 

DEFB 

5BFC 

REST  : 

0  2 

DEFB 

2  chars,   to  be  output 

5BFD 

IB 

DEFB 

ESC  char. 

5BFE 

32 

DEFB 

restore  normal  vert,  mode 

5BFF 

FF 

DEFB 

spare  byte 

1  3 


TS2068  TAPE  TO  DISK  PROJECTS  AND  AVAILABLILITY 

Over  the  years  those  of  us  who  have  steadfastly  used  our 
TS2068S  have  contended  with  the  fact  that  many  of  our  old 
favorite  programs  that  came  on  tape  only  were  never  upgraded  to 
disk  for  us  to  use  on  our  favorite  disk  interface.  We  have  had 
some  great  disk  drive  interfaces  over  the  years,  ranging  from 
Aerco,  Oliger,  Larken,  TOS  and  the  Millenia  K  to  name  a  few. 
Quite  a  few  of  us  got  to  where  we  could  convert  most  programs  to 
disk.  Some  have  preferred  to  use  canned  disk  programs  and  never 
learned  to  do  this  conversion,  and  never  had  the  time  or 
inclination  to  type  in  the  changes  to  make  these  changes  when 
they  were  given  a  listing-  I  hope  to  be  able  to  remedy  this  for 
you. 

Here  at  UPDATE!  Magazine  we  have  over  the  years  received 
the  benefit  of  many  of  our  best  TS2068  programmers,  and  with 
their  kind  indulgence,  I  would  like  to  pass  on  some  of  these 
software  conversions  to  the  rest  of  you.  I  have  practically 
given  up  the  use  of  audio  tape  myself  years  ago  (it  was  great 
when  that  was  all  I  had,  but  that  was  then!)  and  acguired  two 
Oliger,  two  Larken  and  a  couple  of  Aerco  interfaces  to  use  with 
my  TS2068S.  I  want  to  do  this  in  a  legal  manner.  The  reason  I 
say  this  is  that  some  folks  have  been  handing  out  pirated  copies 
of  some  software.  This  may  not  seem  like  a  big  deal  on  an  orphan 
computer,  but  some  of  these  companies  still  object.  An  example 
is  TASWORD  2;  it  is  still  for  sale  by  TASMAN  (though  not  easy  to 
get  a  legal  copy  of  here  in  the  Americas)  and  they  still  object 
to  it  being  passed  around  for  free.  In  this  issue  we  have  shown 
you  the  excellent  updates  and  upgrades  to  this  program  by  Larry 
Crawford.  You  may  find  these  changes  available  in  your  local 
user  group  or  club  library,  but  for  those  who  do  not  have  or  use 
this  source  I  am  making  the  following  offers  to  you  on  this  and 
a  few  other  items  of  software. 

For  those  who  want  to  upgrade        their  tape  copies  of 
TASWORD  2,  or  PRINT  FACTORY  to  either  Larken  or  Oliger  disk,  or 
want  a  disk  copy  of  'bitim.Bl'  for  use  on  your  24-pin  printer  or 
Bubble jet,  send  me  $5  per  program  to  cover  disks,  postage  and 
packing  materials  and  copy  charge,  and  I  will  send  them  to  you 
either  First  Class  or  Priority  Mail.  I  have  too  many  calls  upon 
my  time  and  finances  to  offer  to  do  this  for  free,  but  I  feel 
this  is  a  fair  offer.  If  you  ordered,  paid  for,  but  never 
received  Print  Factory,  phone  or  %n:ite  me  and  I  will  try  to  help 
you  out  in  that  area  also. 

I  hope  this  will  be  of  help  to  you.  To  the  best  of  my 
knowledge,  the  upgrades  for  MSCRIPT  are  still  being  offered  by 
Jack  Dohaney.  Has  anyone  heard  otherwise?  If  anyone  else  has 
tape  to  disk  conversions  done  for  other  TS2068  programs  that 
they  would  like  to  see  made  available  to  the  public  for  legal 
ownership,  please  contact  me.  As  for  those  ordering  from  me, 
since  most  of  us  do  not  have  our  receipts  from  years  ago  to 
prove  we  purchased  these  programs,  I  will  rely  upon  your 
honesty.  If  you  want  to  make  a  legal  purchase  of  some  of  these 
older  programs,  then  contact  either  RMG  or  Mechanical  Affinity. 


1  4 


A  GUIDE  TO  USING  "ctsis.BI",   THE  CUSTOMIZER,   AND  THE  PRINTER 

Larry  Crawford  /  357  Reynolds  Rd  /  London  Ont  /  Canada  /  N6K  2P8 
(519)  657-9119  Public  Domain     10  Oct  93 

SOME  FEATURES  OF  THIS  EXTENSIVELY  REVISED  VERSION  OF  TASWORD  2: 

1.  Can  be  used  with  an  Oliger  system. 

2.  Can  be  used  with  a  LARKEN  system, 

3.  Can  be  used  by  a  combined  01 i ger/LARKEN  system. 

4.  Color  coded  screen  prompts  indicate  which  system  is  active. 

5.  Files  can  be  loaded  from  one  system  and  saved  to  the  other. 

6.  When  a  text  file  is  to  be  Loaded,   Added, or  Saved,   a  catalog 
of  all   text  files  on  the  active  drive  is  displayed. 

7.  One  or  2  keystrokes  can  then  perform  the  desired  operation. 

8.  The  Print  option  has  its  own  menu  which  has  12  options.  Mew 
ones  are: 

a)  change  size  of  top  margin 

b)  change  size  of  bottom  margin 

c)  pause  at  end  of  each  page  for  manual  positioning  of 
the  paper  or  automatic  positioning 

d)  number  of  copies  to  be  printed 

e)  print  number  of  page  at  top. or  bottom  or  not 

f)  print  a  header  or  footer  message  or  not. 

g)  select  Oliger  or  LARKEN  DOS 

9.  A  companion  Customizing  program  allows  you  to  define  the 
graphics,   printer,   and  interface  codes  as  in  the  original 
Tasword.  Additional  Customizing  features  have  been  added: 

a)  edit  the  help  pages  (fast) 

b)  set  color  of  text  file  paper,   ink,   &  left  margin 

c)  set  the  default  values  for  the  printout: 

i)   size  of  the  top  margin 
ii)   size  of  the  bottom  margin 
iii)   size  of  the  left  margin 
iv)  the  length  of  the  form  in  lines 

v)  clear  text  file  or  not  when  ctas.BI   is  loaded 
vi )  pause  or  not  at  end  of  page 
vi i )  select  fanfold  or  cut  sheet  paper  operation 

10.  Compress  or  uncompress  a  text  file, 

11.  Save  the  whole  Tasword  package  to  another  drive  except  for 
the  booting  program  which  must  be  handled  separately. 

12.  Change  from  one  DOS  to  the  other. 

13.  Change  from  disk  to  tape  operation. 

14.  The  1st  6  bytes  of  the  text  file  can  be  used  to  define  a 
default  file  name.  This  can  make  the  saving  of  a  text  file 

a  two-keystroke  operation. 

15.  The  whole  1st  line  can  be  used  for  header  or  footer  data. 

16.  The  main  menu  displays  the  following  extra  information: 

a)  name  of  the  file  in  the  text  buffer 

b)  length  of  file  in  bytes 

c)  length  of  file  in  lines 

d)  length  of  file  in  words 

e)  number  of  tracks  needed  to  save  the  file 

f)  active  drive  number  (flashing) 

17.  The  active  drive  can  be  changed  by  simply  pressing  a  #  key. 
Drive  #4  is  supported  if  in  LARKEN  mode. 

18.  The  drive  used  to  load  the  program  is  defined  as  the  source 


1 5 


drive.   The  same  number  is  used  to  define  the  default  #  of 
the  data  (destination)  drive.   When  some  of  the  options  are 
chosen,   the  source  drive  is  activated  so  that  the 
appropriate  program  or  codes  can  be  loaded. 

19.  The  data  drive,   as  selected  by  the  main  menu,    is  used  to 
load  or  save  text  files. 

20.  Whenever  the  program  is  loading  or  saving  anything,  a 
message  is  displayed  to  inform  you  of  what's  going  on. 

21.  A  single  beep  sounds  when  a  keyboard  input  is  expected. 

22.  A  double  beep  sounds  if  an  invalid  value  has  been  typed  in. 
Control   then  goes  back  to  the  appropriate  menu. 

NOTE:  If  you  have  broken  into  the  program,  <GOTO  V>  will  get  you 
back  to  the  main  menu.  If  you  have  broken  into  the  printing 
process,   type  <RANDOMIZE  USR  59806>  before  <GOTO  v> . 

**********)|C5ic*******>|c****5|<**********>|c5f:***>J:*** 

**  MAIN  MENU  OPTIONS  ** 


J:   LOAD  text  file:   The  text  file  is  cleared  out  and  a  catalog  of 
the  Tasword  text  files  on  the  disk  in  the  active  drive  is 
displayed.   Each  file  name  is  identified  with  a  letter.   The  file 
is  selected  by  this  identifier. 

You  can  escape  to  the  main  menu  by  pressing  the  <STOP>  key. 

If  more  than  26  files  are  on  the  disk,  you  will  be  prompted  to 
press  the  space  bar  to  scroll  to  the  next  page  or  the  UP  cursor 
(key  7)  to  return  to  page  1  of  the  catalog. 


A:   ADD  text  file:   The  same  comments  apply  as  for  the  LOAD  option 
except  that  the  file  buffer  is  not  cleared  and  the  desired  file 
is  added  to  the  end  of  the  existing  text  file  rather  than  being 
loaded  into  an  empty  file  buffer. 


S:   SAVE  text  file:   When  the  SAVE  option  is  selected,   the  same 
catalog  of  all   text  files  is  displayed  as  in  the  load  option  but 
without  the  identifying  letter.  This  will   help  to  avoid  wiping 
out  an  existing  file  by  saving  a  new  one  with  the  same  name.  You 
will   be  prompted  to  press  <ENTER>  to  continue  with  the  save. 
After  this  is  done,  the  default  name  is  displayed  and  is  the 
name  under  which  the  file  will  be  saved  unless  changed  from  the 
keyboard . 


P:    PRINT  text  file:   The  ten  options  and  their  default  values  are 
then  displayed  on  the  screen  as  is  the  type  of  paper  feed.  You 
are  prompted  to  press  a  letter  key  to  change  any  of  the  default 
values.   Otherwise,    hit  the  <P>  key  to  LPRINT  with  the  displayed 
parameters.   If  the  printer  is  not  on  line  at  this  time,   a  prompt 
will    remind  you  to  turn  it  on.   The  <M>   key  will   escape  to  the 
main  menu. 

If  page  1    i s  to  be  printed,   you  will   be  prompted  to  set  the 
paper  to  the  top  of  the  page.   This  will   be  the  position  of  the 
first  line  of  print  and  will   be  the  line  immediately  following 
the  top  margin  spacing  that  you  want.   This  is  critical   since  all 
vertical   spacing  is  determined  from  this  position.   Most  printers 
automatically  feed  to  line  5  from  the  top,    giving  a  5/8"  top 
margin  which   is  usually  acceptable. 

If  the  Page  Pause  option  is  active,   set  the  first  page  as  above 


1  6 


but  set  all  subsequent  pages  to  print  on  the  3rd  line  from  the 
perf orat  i  on . 

If  the  page  pause  feature  is  not  active  and  the  top  margin  on 
subsequent  pages  is  incorrect,   change  the  value  of  the  upper 
limit  of  the  loop  counter,    'i',    in  line  8050  from  d   [4]   to  an 
appropriate  value.    (I  have  a  bubble  jet  printer  now  and  have  no 
way  of  checking  the  operation  with  fanfold  paper) 

If  you  have  just  printed  a  file  and  attempt  another  print,  you 
may  get  an  "OUT  OF  MEMORY"  error  message.  If  so,  simply  <CLEAR> 
and  <RUN>. 


**THE   PRINTER  OPTIONS** 


A:    Start   line:   Always  initialized  to  1.    Can  be  changed  if  the 
<A>   key  is  pressed.   Automatically  changed  to  line  2   if  a  header 
or  footer  is  to  be  printed  and  printing  is     to     begin     with  the 
f i  rst  1 i  ne  of  text . 


B:   End  line:   Always  initialized  to  the  last  one  in  the  file  and 
identified  as  "last".   Can  be  changed  if  the  <B>  key  is  pressed. 
If  it  has  been  changed  and  you  want  to  revert  to  "last",  press 
<B>  again  and  then  <ENTER>. 


C:  Line  spacing:  Always  intialized  to  one.  Can  be  changed  if  the 
<C>  key  is  pressed. 


D:  Left  margin:  The  permanent  default  value  can  be  set  with  the 
<B>  option  of  the  Customizer  program.  A  new  temporary  value  can 
be  entered  if  the  <D>  key  is  pressed. 


E:   Top  margin.   The  permanent  default  value  can  be  set  with  the 
<A>  option  of  the  Customizer  program.  A  new  temporary  value  can 
be  entered  if  the  <E>  key  is  pressed. 


F:   Btm  margin:   The  default  value  is  displayed.   This  can  be  set 
with  the  <B>  option  of  the  Customizer.   A  new  temporary  value  can 
be  entered  if  the  <F>  key  is  pressed. 
The  maximum  number  of  lines/page  is  displayed  on  the  screen. 


G:   Page  Pause?:  The  default  status  is  displayed.   This  can  be  set 
with  the  <M>  option  of  the  Customizer.   The  "YES"  status  will 
require  the  operator  to  position  the  paper  manually  before  the 
next  sheet  is  printed.  Toggled  with  key  <G> . 


H:  #  of  copies:  Always  initialized  to  one.  Can  be  changed  if  the 
<H>  key  is  pressed. 


I:   Number  pages?:   Default  value  is  "NO".  When  key  <I>  is  pressed 
repeatedly,   the  mode  cycles  through  "YES"   (top),    "YES"  (btm), 
and  "NO". 


J:   Header/Footer?:   Default  value  is  "NO".   If  the  <J>  key  is 
pressed  repeatedly,   cycles  through  "hdr",    "ftr",    and  "NO". 

If  active,  the  first  line  of  the  text  file  is  used  to  hold  the 
header  or  footer  message  and  the  start  line  is  set  to  2  if 

1  7 


printing  is  to  start  at  the  first  line. 


-Main  Menu  options  continued- 


Y:    RETURN  to  text  file:    Just  what   it  says. 


T:   SAVE  BASIC  only:   Allows  you  to  save  the  version  that 
you  have  created  for  your  own  needs  without  disturbing  the 
codes . 


W:  Save  Whole  Tasword  package:  THIS  OPTION  CAN  BE  USED  ONLY  IF 
THE  TWO  DISKS  ARE  FORMATTED  FOR  THE  SAME  DOS. 

Clears  out  the  text  file  and  saves  "ctas.BI"  to  the  current 
disk.    Loads  the  Customizer  program  which  loads  the  "taspak.CI" 
CODE  from  the  source  drive  and  saves  it,   "etas. CI"  CODE,  and 
"custtw.BI"  to  the  destination  drive. 

Reloads  "ctas.BI"  from  the  source  drive. 

At  this  point,    if  you  want  to  put  the  LARKEN  AUTOSTART  on  the 
new  disk,    reboot  the  source  drive  and  break  in  when  the  prompt 
to  switch  off  the  Oliger  board  appears.   Then  GOTO  9999.   You  will 
be  prompted  to  enter  the  destination  drive  number  then  to  press 
the  <D>  key  to  save  the  AUTOSTART. 

With  Oliger  disks,   boot  the  source  drive  with  <LOAD>  and  break 
in  before  "ctas.BI"  starts  to  load.  The  timing  here  is  kind  of 
tricky.  When  the  loader  program  on  track  0  is  successfully 
captured,   select  the  destination  drive  and  then  <SAVE  /0> 


C:  Customize  Gr/Prnt r/Hel p  pages:  Loads  the  Customizer, 
"cust.BI",   from  the  source  drive  and  its  menu  displayed: 


**CUSTOMIZER  OPTIONS** 


G:   Define  Graphic  codes:  As  in  Tasword  2. 


E:   EDIT  help  pages:  You  will   be  prompted  to  select  the  Help  Page 
to  be  amended.  Almost  instantly,  the  selected  Help  page  will  be 
displayed,   ready  to  be  amended. 

Upon  returning  to  the  Customizer  menu  with  the  <STOP>  key,  a 
prompt  will   inform  you  that  the  amended  page  code  has  been  put 
into  high  memory  and  that  you  should  choose  the  <S>  option  after 
all  other  desired  customizing  changes  have  been  made. 


P:   Define  Printer/interface  codes   :  As  i n  Tasword  2. 


S:  SAVE  new  code  and  reload  Taswrd:  Saves  "etas. CI"  CODE  to  the 
source  drive  and  reloads  "ctas.BI"  from  it. 


T:  Save  this  customizing  program:  Saves  "custtw.BI"  to  the 
active  drive. 


Y:  Return  to  Tasword:  Reloads  "ctas.BI"  without  saving  the 
codes . 


1  8 


C:    Change  Colour  of  paper  and  ink:    Permits  the  colours  used  in 
the  text  file  display  to  be  changed.   The  formula  for  calculating 
the  colour  codes  is  displayed  on  the  screen. 

0:   OLIGER/LARKEN :   Toggles  between  the  two  DOSes .   This  will 
permit  the  user  to  save  an  amended  version  of  the  Customizer  to 

either  type  of  disk. 


Z:    Fanfold  paper?:   Toggles  between  the  two  types  of  paper. 


PRINTOUT  DEFAULT  VALUES 

A:   Top  margin.   When  chosen,    the  current  default  value  is 
displayed  flashing.    It  can  be  changed  by  entering  a  new  value  or 
retained  by  pressing  <ENTER>. 


B:   Bottom  margin:   When  chosen,   the  current  default  value  is 
displayed  flashing.    It  can  be  changed  by  entering  a  new  value  or 
retained  by  pressing  <ENTER>. 


L:    Left  margin:  When  chosen,   the  current  default  value  is 
displayed  flashing.   It  can  be  changed  by  entering  a  new  value  or 
retained  by  pressing  <ENTER>. 


F:    Form  length  in   ":   When  chosen,   the  current  default  value  is 
displayed  flashing.    It  can  be  changed  by  entering  a  new  value  or 
retained  by  pressing  <ENTER>.   The  standard  value  for  an  11"  page 
is  66  1 i  nes . 


X:  Clear  text  file  on  Load?:  The  current  status  is  displayed.  It 
can  be  toggled  between  "YES"  and  "NO"  with  the  <X>  key. 


M:    Page  Pause?:   The  current  status  is  displayed.    It  can  be 
toggled  between  "YES"  and  "NO"  with  the  <M>  key.   The  "NO"  status 
requires  you  position  the  paper  manually  at  the  top  of  the  next 
page.   It  is  needed  if  you  are  using  multi-copy  forms. 

NOTE:  If  you  have  broken  into  the  program,  <RUN>  will  get  you 
back  to  the  customizer  menu. 


-Main  Menu  options  continued- 


K:   Compress/uncomp  text  file:   You  are  given  the  option  of  saving 
the  current  text  file  with  the  <S>   key   (in  case  you  have  just 
created  it  and  haven't  saved  it).   Any  other  key  will  activate 
the  "CAT  text  files"  function. 

After  the  name  of  the  file  has  been  found  by  pressing  the  file 
identifier  letter  key,   the  Customizer  is  loaded  as  is  the 
"taspak.CI"  code.   A  menu  is  displayed  offering  the  two  options. 

After  the  choice  has  been  made  and  the  compression  or 
uncompressi on  is  complete,   the  name  of  the  old  file  is  displayed 
and  you  are  prompted  to  enter  a  name  for  the  new  file.  When  this 
is  done,   the  file  is  saved  to  the  active  drive  and  both 
"etas. CI"  and  "etas. 81"  are  reloaded  from  the  source  drive  with 

1  9 


the  new  file  in  place. 


0:   OLIGER/LARKEN :   Toggles  between  the  two  systems.   This  allows 
you  to  load  a  text  file  fron  one  disk  type  and  save  it  to  the 
other.    In  fact,   all   options  except  <W>  can  be  used. 

If  OLIGER  is  active,  all  screen  prompts  will  be  in  green.  If 
LARKEN  is  active,   they  will   be  red. 

A  prompt  will   remind  you  to  change  drives  after  changing  DOS. 


D:    Disk  or  tape     LOAD/SAVE     of     Tasword     file:     This     option  is 
strictly  for  the  handling  of  Tasword  text  files.    It  toggles 
between  the  two  storage  devices.   The  active  device  is  highlight- 
ed on  the  main  menu  screen. 


MIRACLE  IN  ff EXPORT,  2ND  TIME  AROUND 

On  Saturday^  May  14th  of  1994,  IQLR  (International  QL  Report)  will 
be  sponsoring  the  second  annual  North  American  QL/QDOS  get  together. 
It  will  once  again  be  held  at  the  Salvation  Army  Building  on  Memorial 
Boulevard  in  Newport,  Rhode  Island  to  the  best  of  our  present 
knowledge.  The  vast  majority  of  those  who  attended  last  year  really 
enjoyed  this  show. 

UPDATE!  Magazine  and  Mechanical  Affinity  were  both  there  last  year 
and  will  be  there  for  this  event!  We  here  at  the  magazine  hope  to  see 
all  of  our  QL  users  and  readers  at  this  years  event.  There  is  more 
than  just  hype  in  the  last  sentence,  because  we  happen  to  really  like 
the  people  we  have  as  subscribers!,  and  enjoy  meeting  them  at  computer 
shows.  The  only  complaint  we  had  about  the  show  last  year  was  that 
there  were  too  few  hours  and  we  here  in  the  Midwest  prefer  to  relax 
and  take  our  time.  From  what  Bob  Dyl  has  told  me  and  published  in 
IQLR,  we  will  have  a  longer  show  this  year.  Come  and  see  old  friends 
and  meet  new  QL  users.  This  may  be  your  best  way  to  see  what  is  new 
for  the  QL. 

Vendors  who  have  said  they  will  be  there,  so  far,  are:  IQLR, 
Mechanical  Affinity,  Miracle  Systems  Ltd,  UPDATE!  MAGAZINE.  QBOX-USA 
will  be  there  demoing  their  QL  supported  and  QL  operated    BBS,  Bob 
Gilder  of  LIST  will  be  there  demoing  the  CL  Systems  "Real  Time 
Digitizer".     I  have  spoken  with  Dilwyn  Jones  of  Dilwyn  Jones  Computing 
and  he  has  pat  in  to  take  off  time  from  his  regular  job  at  the  BBC. 
Freddy  Vachha  of  Digital  Precision  is  trying  to  make  the  time  to 
attend  this  years  show.  We  have  also  been  informed  that  W.N. 
Richardson  &  Co.  will  be  there. 

For  more  information  about  vendor  or  user  group  tables,  or  to  get 
your  tickets  early  to  attend  (save  a  few  bucks),  call  Bob  Dyl  at  (USA) 
401-849  3805  for  either  phone  or  FAX.  I  want  to  see  all  of  you  there. 
Before  going  last  year,  Carol  and  I  had  never  thought  of  Rhode  Island 
as  a  vacation  spot,  but  we  sure  changed  our  minds.  If  you  love  sea 
food  and  jazz,  this  is  a  great  spot  to  be,  and  not  far  from  Cape  Cod 
and  the  islands. 


SOME  COMMENTS  ON   "bitim.BI",    A  UTILITY  TO  CREATE  AND  PRINT  1 
OR  22  ONE-LINE  SCREEN  FILES  TO  A  24-PIN  OR  BUBBLE  JET  PRINTER 


Larry  Crawford  /  357  Reynolds  Rd  /  London  Ont  /  Canada  /  N6K  2P8 
(519)   657-9119  Public  Domain     10  Oct  93 


For  background  information  on  24-pin  operation  see  the  Tasword 
file  "Ibibkg.CT"  or  choose  option   [C]   of  the  disk  menu. 


When  loaded,  a  prompt  will  ask  you  to  enter  the  name  of  the 
screen  file.   This  demo  disk  contains  "mag. CI"  and  "alb. CI". 

It  will  probably  be  prudent  to  have  only  one  file  on  a  disk  with 
its  name  on  the  label   so  that  you  will   know  what  to  type  in  at 

this  poi  nt . 

Since  the  screen  name  must  be  in  variable   ' s$ ' ,   never  RUN  the 
program  after  you  have  broken  into  it.   Use  <G0  TO  1>  instead. 
Should  you  inadvertently  use  <RUN>  then  GO  TO  <8888>  after  the 
error  message  and  reenter  the  screen  file  name. 

After  you  have  entered  the  screen  name,   a  menu  will  appear, 
offering  a  choice  of  13  options: 

BIT-IMAGE  MENU 


A: 

CREATE  1    FILE  FROM  SCREEN 

B: 

CREATE  22   FILES  FROM  SCREEN 

C: 

PRINT 

1    FILE   IN  SINGLE  DENSITY 

D: 

PRINT 

1    IN  DOUBLE  DENSITY 

E: 

PRINT 

1    IN  TRIPLE  DENSITY 

F: 

PRINT 

1    IN  HEX  DENSITY 

G: 

PRINT 

22  FILES  IN  SINGLE  DENSITY 

H: 

PRINT 

22   IN  DOUBLE  DENSITY 

I  : 

PRINT 

22   IN  TRIPLE  DENSITY 

J: 

PRINT 

22   IN  HEX  DENSITY 

K: 

PRINT 

1    FILE  TO  2040  PRINTER 

L: 

PIRNT 

22  FILES  TO  2040 

M: 

DISK  MENU 

Six  of  these  deal   with  one  line  file:   you  may  create  a  file 
whose  name  will   be  the  first  3  characters  of  the  screen  file 
name  pi  us  "1 . CI " . 

Yuu  may  print  it  to  the  large  printer  in  one  of  four  densities 
or  the  2040  printer.   The  2040  does  not  produce  good  quality 
printouts,   of  course,   nor  are  circles  round.   It  does  provide  a 
quick  and  easy  way  of  checking  the  contents  of  the  line  file, 
especilly  to  see  if  it  is  inverse. 

The  others  deal  with  a  full   screen:   you  may  create  22  line  files 

2  \ 


whose  names  will   be  first  3  characters  of  the  sceen  file  name 
plus  "n.CI"  where  n  is  the  number  of  the  line  file.  A  message  at 
the  bottom  of  the  screen  inform  you  which  file  is  being  created 
or  saved.   The  process  of  dealing  with  all   22  files  is  about  6 
mi  nutes . 

You  may  print  them  to  a  large  printer  or  the  2068.  All  22  files 
will   load  and  print  in  about  45  seconds. 

When  any  of  these  options  is  selected,   you  will  be  prompted  to 
choose  between  a  normal  or  inverse  file.   Remember  that  a  normal 
screen  image  is  actually  a  negative  so  that  if  you  want  to  print 
out  a  positive  bit  image  copy,  you  will  probably  want  to  choose 
the  inverse  option. 

The  final  option  is  to  return  to  the  disk  menu. 


SOME  COMMENTS  ON  "bitim.BI" 

LINE  10:   Defines  the  BEEP  subroutine   'bp'.   Assigns  to   'h$'  the 
first  three  characters  of   ' s$ ' ,   the  name  of  the  screen  file  plus 

Sets  the  BORDER,   PAPER,   and  INK  colors.   Sets  the  keyboard 
input  to  lower  case. 

LINE  20:  The  menu. 

LINE  30:   Inputs  and  error  traps  the  menu  choice. 

LINE  35:   Reboots  the  AUTOSTART  if  the  <M>  option  was  selected. 

LINE  40:   Prompts  for  an  INVERSE?  creation  or  printing  of  the 
file(s). 

LINE  60:  Sets  the  number  of  line  files  to  be  created.  Transfers 
control  to  line  140  to  create  the  file(s). 

LINE  70:   If  the  large  printer  is  to  be  used,   loads  the  code 
routine.   Determines  the  number  of  lines  to  be  handled. 

LINE  80:  Waits  for  the  printer  to  be  put  on  line  before  attempt- 
ing to  print.   NOTE:   the  test  value  used  here  is  236.   Change  it 
if  necessary  to  conform  to  your  printer  interface. 

LINE  90:  Defines  the  address  that  the  code  routine  uses  to 
determine  the  number  of  times  a  bit  image  DATA  byte  is  to  be 
sent  to  the  printer  (LET  den=24394) .  Sets  the  left  margin  and 

Line  Feed  spacing. 

LINES  100  to  140:   Set  the  parameters  for  the  density  of  the 
large  printer  bit  image  printout. 

LINE  150:   Determines  the  number  of  lines  to  be  sent  to  the  2040 
printer  and  jumps  to  5000  to  do  so. 

LINE  160:    Displays  the  screen  file  if  all   22   line  files  are  to 
be  printed.   This  is  not  needed  but  lets  the  user  know  what 


22 


output  to  expect. 


LINE  170:  Sets  up  a  loop  to  send  'nf  lines  to  the  printer.  Sets 
the  address  for  the  start  of  each  line's  data  to  26296  (5B00). 

LINE  180:    Defines  the  name  of  the  line  file  and  loads  it  into 
the  2068  printer  buffer. 

LINE  190:    Sends  codes  to  the  printer  to  tell    it  how  many  bytes 
of  bit  image  data  to  expect. 

LINE  200:  Calls  the  code  routine  at  24331  to  send  the  data  to 
the  printer  (see  Tasword  file  "bidis.CT"  for  a  disassembly  of 
this  routine).  Terminates  the  loop.  Returns  to  menu  after  all 
files  have  been  sent. 

LINES  500  to  530:  Subroutine  to  send  codes  to  the  printer.  NOTE: 
the  test  value  of  236  in  line  520  may  need  to  be  changed. 

LINE  4000:   The  start  of  the  "create-a-f i 1 e"  routine.   This  first 
line  loads  the  screen  file,    initializes  the  line  file  number  to 
zero,   and  defines  the  address  of  the  first  data  byte  as  the 
beginning  of  the  printer  buffer. 

LINE  4005:   Sets  up  an    's'    loop  to  look  after  the  3  sections  of 
the  upper  screen.   Sets  up  an  "1"  loop  to  take  care  of  the  8 
print  lines  in  each  of  the  top  two  sections  and  the  6  lines  in 
the  bottom  one.   Increments  the  line  file  counter  and  tests  it  to 
see  if  all   the  desired  lines  have  been  created.   If  so,  control 
passes  back  to  the  menu. 

LINE  4010:   Assigns  to   ' f $ '   the  line  file  name.   This  will   be  the 
first  three  characters  of  the  screen  file  name  plus  the  line 
number  plus  " . CI " . 

Initializes  the  pixel   column  counter,    'k',   to  -1.   This  will  be 
incremented  256  times  for  each  of  the  print  lines. 

Sets  up  the  scan  line  loop,    'i',   which  points  to  the  first  to 
last  pixel   scan  lines   in  steps  of  256. 

Sets  up  the  print  column   loop,    'j',    to  point  to  each  of  the  32 
columns  in  steps  of  one. 

Assigns  to  the  data  byte,    'b',   the  contents  of  the  screen  file 
pointed  to  by   'i'   and  'j'. 

LINE  4015:   If  an  inverse  file  was  requested,   address  26671  will 
contain  a  value  of  1  and  the  data  byte  will   be  subtracted  from 

255  to  change  all   its  zeros  to  ones  and  vice  versa. 

LINE  4020:    Pokes  the  byte  into  the  printer  buffer  and  repeats 
the  process  for  the  next  column  and  scan  line. 
Saves  the  resulting  256  bytes. 

LINE  4030:   Repeats  for  each  of  the  8  print  lines  in  the  3  thirds 
of  the  screen  except  for  the  last  one:    line  4005  returns  to  the 
menu  after  the  sixth  print  line  of  the  bottom  third. 

LINES  5000  to  5030:   The  " send- to-2040 "  subroutine.    Lprints  the 
required  number  of  bit   image  files  after  converting  them  to 


23 


inverse  if  requested. 


LINE  7000:   The  BEEP  subroutine. 

LINE  8888:   The  entry  point  when  the  program  is  first  loaded. 
Prompts  for  the  name  of  the  screen  file  to  be  used,   then  passes 
control   to  line  1   to  initialize  variables  and  call   up  the  menu. 

LINE  9999:   Saves  the  program  to  run  at  line  8888. 


QZX 

<  ) 

The  Journal  Covering  Amateur  Radio  and  Suiclair  Computers 
ZX80.  Micro- Ace.  ZX81,  TSlOOO,  1500.  and  2068,  QL:  Z88 
Alex.  F  Burr,  K5XY,  Publisher 
2025  O'Donnell  Drive 

Las  Cruces,  NM  88001 
1 993  July  7 

QZX  is  a  monthly  newsletter  piiblishnig  articles  of  a  technical  nature  of  interest  to  Radio 
Amateurs  and  other  technically  oriented  people  from  all  over  the  United  States  and  some 
overseas  countries.  The  articles  relate  to  any  of  the  Sinclair  computers  ,  The  US  subscription 
rate  is  $15.00  per  year.  For  a  sample  issue  please  send  $L00  (postpaid). 


BACK  ISSUES  OF  UPDATE  SPECIAL  OFFER 

In  order  to  reduce  our  present  inventory  of  back  issues  of  UPDATE! 
Magazine  we  are  offering  the  following  through  the  end  of  March,  1994. 
The  normal  price  for  a  four  year  subscription  is  $18.00.  Despite  the 
rising  cost  of  mailing,  paper,  photocopy  toner,  etc.,  we  have  kept  the 
price  the  same  for  going  on  4  years.  Prior  to  our  taking  over  UPDATE!, 
the  magazine  was  guite  ably  published  by  Bill  Jones  for  three  years. 
This  gives  us  guite  a  treasure  trove  of  back  issues  to  offer  to  those 
who  have  missed  out  on  them.  Here  is  the  deal:  We  are  able  to  offer 
back  issues  on  all  but  two  of  the  early  ones;  this  means  (not  counting 
this  issue  year  which  is  still  covered  under  current  subscriptions  and 
prices)  we  can  offer  complete  sets  of  22  issues  and  at  the  great  price 
of  only  $70.  This  would  (normally  under  our  usual  back  issue  price  of 
$16  for  four  issues)  have  been  $88.  You  get  to  save  $18,  and  we  get 
some  more  room  around  the  house!  For  those  not  guite  so  adventuresome 
who  only  want  four  back  issues  at  a  time,  we  are  offering  to  do  so  for 
only  $14,  but  only  through  the  end  of  March  1994.  When  an  issue  is 
gone,  we  will  not  be  making  any  more  copies  of  it,  so  I  urge  you  to 
take  advantage  of  this  offer  soon. 

24 


Modems 


^  (Me(fMa£afe 


CATUG 


Computers  use 
binary  codes  of  "ON" 
bits  (which  have  a 
value    of    1)  and 
"OFF"    bits  (which 
have  a  value  of  0)  for 
sending  infonnation 
to  components  across 
short    distances  to 
serial  peripherals  such 
as  serial  printers. 
Computers  voltages  from  5  to  15  volts  for 
an  "on"  bit  and  from  -5  to  -1 5  volts  for  an  "off' 
bit.  But  to  send  information  over  the  telephone 
lines,  computers  need  to  modulate  this  digital  in- 
:  formation  into  analog  format  the  telephones  use, 
i  in  other  words  convert  it  into  variable  pitch 
I  sound  instead  of  beeps,  then  demodulate  it  at  the 
I  other  end  so  that  the  receiving  computer  can  un- 
I  derstand  it.  Hence,  the  device  tiiat  does  this  takes 
its  name  from  Modulate  DEModulate  => 
MODEM. 

Modems  communicate  one  bit  at  a  time 
using  serial  transfer.  The  standard  serial  transfer 
uses  9  wires  of  which  only  two  wires  actually 
transfer  data,  the  rest  manage  the  transfer  proc- 
ess and  provide  signal  ground,  to  prevent  statics 
and  interference. 

Your  communication  software's  dial 
command  transmits  a  signal  ATDT  (ATtention: 
Dial  Tone)  followed  by  a  phone  number  to  your 
modem,  which  goes  oiT-hook  —  picks-up  the 
phone  so  to  speak  —  and  dials  out  using  DTMF 
(tone)  as  opposed  to  pulse  PT  dialing  in  this  case. 
When  the  modem  on  the  other  end  receives  a 
I  ring,  it  sends  a  signal  (Rl)  to  the  software  telling 
it  to  issue  a  command  to  pick  up  the  phone. 
I        When  the  remote  modem  picks  up  the 
I  phone,  your  modem  sends  out  a  hailing  tone,  and 
the  remote  modem  responds  with  a  higher  pitch 
tone,  llie  modems  then  exchange  infonnation 
(cackle)  about  how  to  transfer  data  in  a  hand- 
shake, rate  (BAUD,  bits  per  second),  type  of 


transfer  (ASCII,  Xmodem  etc.)  and  settings 
(8N1)  to  determine  the  size  of  data  packets  the 
systems  will  exchange.  Hence  the  word 

PROTOCOL. 

Once  the  communications  are  established 
the  modems  send  a  Data  Carrier  Detect  signal 
(squeal),  which  continues  until  the  modems 
either  hang  up  or  gets  cut-oflf. 


A  data  packet  is  a  group  of  bits  that  consti- 
tutes a  single  character.  The  8  in  the  setting  8N1 
refers  to  the  number  of  data  bits  in  the  packet. 
Each  packet  is  enclosed  by  a  START  bit  and  a 
STOP  bit  that  tell  the  receiving  modem 
where  the  packet  begins  and  ends.  The  1 
refers  to  the  number  of  stop  bits  in  the  packet. 


Data  packets  sometimes  contain  a  special 
PARITY  bit,  which  the  modem  use  for  basic 
error  checking.  Parity  can  be  set  to  ODD,  EVEN 
or  NONE.  When  parity  is  even,  the  transmitting 
system  sums  the  Os  and  Is  and  gives  the  parity 
bit  a  value  of  1  or  0,  whichever  makes  the  total 
an  even  number  (check-sum?).  If  the  receiving 
modem  gets  a  different  result,  it  assumes  that  the 
transmitted  data  is  incorrect  and  requests  a  re- 
transmit from  the  other  modem. 

When  a  communications  session  is  over, 
each  of  the  computers  software  sends  an  ATH 
(ATtention:  Hang)  conunand  to  its  modem, 
instructing  it  toon-hook  —  hang-up.  Or  when 
the  other  modem  loses  the  data  signal  carrier 
(squeal)  it  also  hangs  up. 


DTR  c> 

DCD  o 

DSR  o 

ATA  « 

ATO  <=> 


Data  Terminal  Ready 
Data  Carrier  Detect 
Data  Set  Ready 
ATtention:  Answer 
ATtention:  (go)  Online 


QBOX-USA  -  Utica,  MI,  USA 


John  Impellizzeri  and  Don  Walterman  have  a  QBox  BBS  set  up  in  the  US.  This 
BBS  is  carrying  four  QL  related  echomail  message  areas  from  the  European 
BBS's  that  exchange  mail  via  the  Fidonet.  In  these  echomail  areas,  a  North 
American  QL  user  can  exchange  messages  with  users  in  Europe.  TF  Services  is 
the  host  BBS  for  the  echomail .   The  message  areas  are:  International  QL, 
Minerva,  Quanta  and  QBox-Sysop. 

There  are  also  local  message  areas  along  with  file  areas  that  will  have 
public  domain  programs  available  for  download.  Uploads  are  gladly  accepted 
too!  The  BBS  is  running  the  QBox  software  from  Jan  Bredenbeek  on  a  QL 
computer.  There  is  more  info  online  about  the  hard  and  software  used  on  the 
system.  Please  give  it  a  try! 

313  254  9878 

24  hours,  up  to  2400  baud 


t ****** t*******^****t**t***tt***** 

COMPUTER  CLASSICS 

RT  1,   BOX  117 
CABOOL,   MO  65689 


Repair  Service  for  America's 
Favorite  Home  Computers 
and  their  accessories 


ADAM       ATARI  COMMODORE 
IBM       OSBORNE  SINCLAIR 
TIMEX       TI  TRS~80 


BUY  -  SELL  -  TRADE  ~  UPGRADE 

Write  for  prices 
SASE  appreciated 

Ph.    (417)   469  -  4571 

********************************** 


******************************* ******i 

COMPUTER  CLASSICS 
FOR  SALE  *** 

IBM  XT  COMPUTER     $200  +shipping 
Includes  10  MEG  hard  drive,  640K 
RAM,  360K  floppy,  serial  port  and 
parallel  port,  monochrome  monitor, 
and  keyboard. 


IBM  286  COMPUTER     $350  +shipping 
Includes  20  MEG  hard  drive,  1MB 
RAM,    1.2MB  ft  1.44MB  floppies, 
serial  ft  parallel  ports,  keyboard, 
and  monochrome  monitor. 


QUAD  DENSITY  5   1/4   in.  (720K) 
half  height  floppy  drives 
$25  each  or  10  for  $150 

IBM  HARD  DRIVES,  CONTROLLERS, 
and  RGB  COLOR  MONITORS 
Write  for  prices 

************************************** 


Tony  Bllzzar-cJ 
512    E    Cour-t,    Welsen,    Idci.  33672 


My  son,  Ron,  tells  me  that  the  QL 
supporting  journals  need  articles  on  QL 
use  and  that,  since  I'm  a  heavy  user,  I 
should  write  some.  Okay.  But  most  of 
you  are  computer  buffs;  I*m  not.  The 
QL  is  the  only  computer  I've  ever  used, 
excepting  a  couple  hours  playing  with  a 
i  Timex-Sinclair.  When  my  sons  advised 
I  me  to  get  one  of  those  "super-buy"  QL 
computers  I  asked,  "What  do  I  need 
with  a  computer?"  With  a  little 
argument  they  convinced  me  that  if  I 
only  used  the  word-processor  it  beat 
my  WD-40-soaked  IBM  Selectric  every 
way  imaginable.  Turns  out  they  were 
right.  That  is,  after  I  nearly  beat  the 
thing  to  death  learning  Quill  (old  dog, 
new  tricks  situation).  And  I  went 
through  the  same  trauma  with  Text87. 
(This  is  a  Text87  doc.) 

Materially,  my  mind  works  on 
mechanical  and  electrical  logic;  not 
computer  logic.  Therefore,  after  I  read 
a  new  program's  manual  I  call  Ron  to 
find  out  what  it  means.  He's  developed 
into  quite  a  translator. 

My  present  hardware  amounts  to  a 
Magnavox  RGB  monitor,  896K  Trump 
Card,  dual  5  1/4  Mitsubishi  discs  from 
Sharp,  a  Seikosha  SP  1200-AS  9  pin  and 
an  Epson  LQ-500  24  pin  printer  and  a 
back-up  QL  with  a  monocrome  monitor. 
The  Seikosha  just  prints  mailing  labels 
these  days;  the  24-pin  doing  the  heavy 
work.  I  picked  up  a  cheap  Tandy  A/B 
switch  to  put  between  them  and  made 
up  a  cable  from  switch  to  serial  1. 
Both  lights  of  the  *4#!90  disk  drivers 
come  on  every  time  a  floppy  is  called, 
always  have;  Stuber  wasn't  very 
anxious  to  help  fix  it  and  it  still  drives 
me  nuts.  Otherwise,  I'm  happy.  (Ron 
has  about  talked  me  into  networking 
the  backup  QL;  might  be  fun.) 

Software?  More  than  I  use.  Taught 
myself  Quill  and  Archive  out  of  the 
i  originals.  Ron  bought  me  Taskmaster; 
so  far  it's  mastered  me.  (But  I  hope  to 
write  its  "screen  saver"  into  every  boot 
I  have!)  Bought  Stuber's  early  version 
of  Xchange  and   have   had   to  learn  to 


use  it  for  its 'mail-merge  feature,  which 
use  I  will  describe  herein.  Also  have 
Bill  Cable's  Archive  enhancements  and 
like  what  I've  used  very  much  but  for 
the  awfully  slow  screen  changes. 

Following  is  one  layman's  use  of  the 

QL: 

As  mentioned,  I  was  interested  in  a 
good  typewriter  -  Quill.  It  soon  made 
the  old  way  comparable  to  chiselling 
stone.  And,  until  someone  writes  a 
mail-merge  for  Text87,  I'll  continue  to 
use  it  for  special  purposes.  Being 
politically  oriented,  if  I'd  had  Quill  25 
years  ago,  a  lot  more  politicians  would 
have  had  to  make  a  lot  more  excuses 
concerning  their  actions. 

Being,  at  the  time  of  my  QL 
purchase,  maintenance  manager  of  a 
good-sized  vending  machine  business,  I 
soon  saw  the  advantage  of  a  machine 
data- base  for  the  whole  operation  and 
began  spending  my  evenings  typing  in 
data  for  every  machine  in  the  business. 
My  crew  groaned  when  I  first  exposed 
them  to  the  print-outs,  but  soon  they 
were  looking  for  updates  of  equipment 
on  locations  to  help  their  preparations 
for  repairs,  etc. 

Next,  two  of  my  sons  turned  their 
correspondence  into  a  magazine  and  I 
got  elected  to  keep  the  address  data- 
base -  now  up  to  about  1400  names. 

Have  also  developed  my  own  six- 
page  or  so  monthly  (?)  mail-out  sheet 
(Text87  produced)  and  regularly  update 
its  address  data-base. 

Lastly,  I  run  an  irrigation- ditch 
lateral  in  our  part  of  town  7  months  of 
the  year  and  my  wife  has  now  become 
secretary-treasurer.  A  tax  bill  must  be 
sent  to  each  address  on  the  ditch-line 
each  year.  In  the  past  the  secretary 
had  triplicate  legal  forms  printed, 
crash-numbered  and  bound  at 
considerable  cost.  Then  she  had  to 
laboriously  hand-enter  all  the 
information  for  each  address. 

Last  year  I  used  Xchange's  mail- 
merge  feature  and  set  up  the  whole  bill 
on  an  8   1/2  X  11   sheet  in  Quill;  then 


27 


created  an  Archive  data- base  to  hold 
each  lot's  detailed  info.  This  entailed 
looking  back  through  years  of  dusty 
records  and  making  trips  to  the  county 
assessor's  office  to  find  the  answers  to 
riddles  caused  mainly  by  individualistic 
penmanship. 

To  create  a  form  including  all  the 
necessary  legalisms  on  one  sheet  really 
challenged  Quill's  versatility.  (Sample^ 
are  provided  if  the  publisher  has 
display  spax:e. )  I  could  never  have 
managed  it  without  Quill's  ability  to  use 
custom  translates  in  the  printer_dat. 
Happily,  I  had  made  drivers  beforehand 
using  translate  codes  (as  shown  by 
Mike  de  Sosa  in  an  article  from  an  old 
Time  Designs)  to  take  advantage  of  the 
LQ-500's  founts. 

When  it  came  time  to  merge  the  data 
into  the  form  most  everything  had  to 
be  jockeyed  around  some  more. 
Through  frustrating  trial  and  error  I 
discovered  that  the  Xchange  mail-merge 
only  worked  so  many  lines  down  the 
page.  Because  the  teuc-payer  tear-off 
payment  stubs  had  to  be  at  the  bottom 
of  the  sheet  and  had  to  carry  the  same 
number  as  the  main  bill,  this  meant  that 
I  couldn't  merge  bill  numbers  I  had  set 
up  in  the  data- base.  Finally  I  used  a 
manual  numbering  machine.  However, 
Ron  recently  brought  his  new  public 
domain,  updated,  Xchange  and  we 
discovered  (just  before  my  QL's  original 
membrane,  as  well  as  that  of  the  back- 
up, decided  to  quit)  that  that  problem 
has  been  corrected.  This  year's  bills 
went  out  with  the  numbering  merged 
perfectly. 

To  have  everything  align  properly 
on  the  merged  sheet  I  discovered  that  I 
had  to  allot  the  proper  number  of 
sp£U3es  on  the  doc  (even  though  it 
pushed  things  out  of  place  in  the  Quill 
template)  and  then  be  sure  to  fill  every 
space  of  every  field  in  the  database. 
That  meant  a  lot  of  speuies  run  into  the 
31  fields  on  the  Archive  screen  I  had 
created. 

During  the  course  of  all  this 
research  and  set-up  I  discovered  that 
through  the  passage  of  time,  selling  off 


of  parcels,  etc.,  the  ditch  tax  had  lost 
much  of  its  equity.  So  before  the  1993 
billing  this  cantankerous  old  dog 
attacked  Abacus  hoping  to  equalize  the 
tax"- base  per  square  foot.  But  after 
learning  its  basics,  I  found  it  easier  to 
use  a  calculator.  Seems  that,  given 
length  &  width,  Abaujus  could  figure 
square  footage  of  each  lot,  but  I  know 
zilch  about  math  formulas  and 
programing.  Maybe  someone  can  explain 
to  me  how  to  set  up  Abacus  to  do  that 
job  in  the  future. 

Last  year  I  printed  the  bills  on 
continuous  feed  paper.  This  time  I 
used  a  cut-sheet  feeder.  One  seems  to 
work  about  as  well  as  the  other 
edthough  the  cut-sheet  eliminates  the 
extra  time  needed  to  tear  eill  the 
perforations. 

By  the  way,  a  local  programer  wrote 
a  special  PC  program  for  another  ditch- 
lateral  company  in  town  which  went  on 
computer  a  year  before  us.  They  still 
have  a  glitchy  situation  with  botched 
bills  while,  except  for  the  manual 
numbering  -  now  corrected  -  our  bills 
printed  out  without  a  hitch  first  time 
out. 

Don't  know  if  this  is  what  QL 
publications  need,  but  this  is  how  I  use 
my  QL.  As  for  the  technicalities  of  how 
some  of  the  objectives  are  accomplished 
-  I  tend  to  forget  the  details  until  I 
have  to  do  it  again.  Then  re-reading 
the  manual  usually  refreshes  my 
memory. 

Again,  I'm  not  a  computer  buff, 
never  ran  a  PC,  but  I  know  a  useful 
tool  when  I  see  it  operate.  Now  when 
the  grandkids  play  the  simple  Quanta 
library  games  on  my  QL,  I  get  nervous. 
And  when  the  membrane  gave  up  I 
wasn't  sure  how  life  would  progress. 
Luckily,  Frank  Davis  of  Mechanical 
Affinity  had  me  fixed  up  with  new- 
production  membranes  in  just  two  days. 
Real  service! 

Hey,  when  the  QL  "died"  I  was  too 
busy  using  mine  to  attend  the  funeraL 

-  end  - 


26 


MIDDLE    WEISER     IRRIGATION     LATERAL  DISTRICT 


NOTICE  OF  TAXES 


No, 102 


TAX  LEVY  FOR  1993 


Weiser,  Idaho, 


,1993 


Myers  Enterprises 
537  E  Court 

Weiser,  ID  83672 
c/o  J.  Myers 


Please  take  notice  that  your  taxes  for  the 
year  1993  on  the  below  described  property 
amount  to  the  sum  of 

Fifty-seven  and  28/100-    DOLLARS      $  57.28 


DESCRIPTION  OF  LANDS 


AMOUNT  AND  DISTRIBUTION 


Hanthorn  Add'n. 

158'  X  190'  X  100'       22910  sq' 


Blk! Apportionment 


Total  Tax 
1/2  Pd.  1993 
Balance  Due 
Penalty 
Advertising 

Total  Paid  : 


THE  FOLLOWING  TAXES  ARE  DELIQUENT 
ON  ABOVE  PROPERTY 


IMPORTANT  ■■  Notice 
are  due  and  payable  at  the  ( 
of  Barbara  Blizzard  in  Weis( 
liquent  at  6:00  o'clock  p.» 


by  given  that  the  assessments  above  indicated 

office  of  the  District,  same  being  the  home 
ser,   Idaho.     Said  assessment  will  becoM  de- 
the  third  Monday  of  Deceaber,  1993, 


pro\ 
date 


'ided  that  if  one-half  of  the  same  shall  be  paid  on  or  before  said 
i,  the  remainder  may  run  without  interest  but  will  becone  delinquent 
lot  paid  on  or  before  6:00  o'clock  p.m.  on  the  third  Monday  of  June, 
fill  be  added  to  all  delinquent  as se se- 
en (10)  percent  per  annia  fro«  January 

THESK  AMOUNTS  ASS  SET  BY  LAW. 
BARBARA  BLIZZARD,  Secretary 
512  East  Court.  Weiser.  Idaho  83672 


1994.     A  penalty  of  two  percent 
■enta  and  an  interest  charge  of 
Ist  will  accrue  until  settleaen 
Make  remittance  payable  to: 


If  the  owner's  name  is  not 
please  indicate  below: 


Present  Owner_ 


MEMO: 


Your  cancelled  check  is  your  receipt 


FOR  PROPER  CREDIT  CUT  AND  RETURN  THIS  PORTION  WITH  PAYMENT; FOR  PROPER  CREDIT  CUT  AND  RETURN  THIS  PORTION  HUH  PAYMENT 


No. 102 

FULL  OR  FINAL  PAYMENT 


Barbara  Blizzard,  Secretary 
512  East  Court,  Weiser,  Idaho 


Enclosed  find  $_ 


 in  Final  and  Full 

payment  of  taxes  levied  for  the  year  1993  on 
the  property  described  in  the  Tax  Notice  bear- 
ing the  same  number  and  year  as  this  stub  and 
from  which  this  stub  has  been  detached. 
Respect  fully, 


No. 102 

FIRST  INSTALLMENT 


Barbara  Blizzard,  Secretary 
512  East  Court,  Weiser,  Idaho 

Enclosed  find  $  in  payment  of 

the  First  Installment  of  taxes  levied  for  the 
year  1993  on  the  property  described  in  the 
Tax  Notice  bearing  the  same  number  and  year 
as  this  stub  and  from  which  this  stub  has 
been  detached.  Respectfully, 


A^eCHAHICAL 
AFFIHITV 

515  eAST  i^AIH  ST.     QK    5251  VILTOW  VOOP  CT 
V&W  m  4^970  IMPIAMA1>QLI6  IM  ^^254 

517    475    a031  517  291  6002 

FKAWK  PAVIS  1>AUL  HQl./i^GKeM 

Bringing  the  very  best  to  you  in  SINCLAIR  software  and 
iiardware  from  around  the  world.  We  want  to  provide 
service  to  you  tlie  customer.  Need  something,  give  us  a 
call.  Make  all  checks  or  money  orders  out  to  either  Frank 
Davis  or  Paul  Holmgren  .  Thanks?  Payment  in  LIS$. 
SPECIALS  GOOD  TILL  CURRENT  SUPPLY  EXHAUSTED 


TRUMP  CARDS:  896*K  RAM,  Tool  Kit  2,  disk  interface  lor  QL.  These  are  used,  but  in  good 
condition  and  are  being  offered  for  only  $100  till  current  supply  Is  sold. 

512IC  MIRACLE  tXFANDER  RAM  CARDS:for  those  with  a  disk  interface  and  no  extra 
memory,  or  an  unexpanded  QL  and  would  like  to  increase  the  available  memory  in 
order  to  use  larger  programs,  then  these  are  excellent,  and  are  available  for  only  $45. 

SINCLAIR  QL  PRINTERS:  in  QL  black,  9  pin  dot  matrix  printers  made  to  work  specially 
with  the  QL.  Tractor  feed,  so  they  are  great  for  labels,  and  since  they  are  an  impact  pin 
printer  (as  opposed  to  a  laser,  deskjet  or  bubblejet)  they  can  be  used  with  multi-part 
forms.  These  are  available  for  only  $60. 

SINCLAIR  QL  MONITORS:  we  have  these  In  limited  supply,  with  more  on  the  way,  so 
please  call  or  write  first  to  check  on  availability.  These  are  black  TTL  RGB  monitors 
bearing  the  QL  logo  and  designed  to  work  great  with  the  QL.  On  sale  f  or  $125 

SERIAL  PRINTER  CABLES  for  the  QL:  for  the  low  price  of  $14  each. 

3D  PRECISION:  a  suite  of  programs  which  permits  the  creation  and  rapid  manipulation 
of  three-dimensional  objects  in  any  color,  or  combination  of  colors  on  the  QL.  It  even 
comes  with  its  own  3D  Editor,  SuperBasic  Toolkit  and  Assembler  Toolkit.  Objects  are  of 
the  wire  frame  type.  We  normally  offer  this  program  for  $40,  but  on  sale  for  $25. 

EYE-Q:  an  advanced  graphics  package  for  the  QL  to  create  sophisticated  designs  of  any 
size  on  the  QL  for  saving,  reloading  in  other  programs  or  dumping  to  a  printer 
(hundreds  of  printers  supported).  Normally  $54,  on  sale  for  $40. 

HERMES  REPLACEMENT  EOR  THE  8049:  for  dependable  upto  19,200  baud  operation, 
improved  sound  and  independent  serial  bauds  all  this  and  more  for  only  $43.  To 
install  requires  opening  your  computer. 


Psst! !    Looking  for  more  Programs??  Cheap?? 


Here  Is  a  very  small  list  of  what  can  be  found  out  there  in  the  world  for  the  QL  if  you  have  a 

modem  and  can  call  a  BBS.  For  those  of  you  without  a  modem,  think  about  it.  There  are 
several  BBS's  in  the  USA  that  cater  to  our  line  of  computers. 

There  is  also  INTERNET.  A  world  wide  method  of  communicating  via  computer.  They  offer 
programs  and  an  opportunity  to  actively  exchange  electronic  correspondence  with  other  QL 
users. 

These  programs  have  all  been  uploaded  somewhere  out  there  for  QL'ers  to  use. 

ABAtra_exp  Psions'  Abacus  file  format  explained 

ANSISR_zip  strip  ANSI  codes  from  log  files,  uses  TK2  and  Qlib 

BASCON_zip  SB  Extension  for  Linking  in  QJump  Configuration  Blocks 

C401  A_zip  C68  4.01  disk  1 .  C  for  the  QL  various  utilities 

C400B_zip  C68  4.00  disk  2.  CfortheQL  Main  system  disk 

C68400_zip  C68  runtime  disk  3.  Master  doc  disk  for  C68 

The  current  "STANDARD  for  'C'"  on  the  QL. 

CFG_zip  place  QPTR  configuration  blocks  into  'C 

CHECK_zip  SB  extension  to  check  for  (non)  numeric  INPUT 

CIRCUI_zip  Miscellaneous  circuit  diagrams  and  connector  pin-outs 

CRITMS_BAS  Critical  Mass  Game  (1  or  2  players)  from  Dec.  88  QL  World 

DISKS_TXT  Text  file  describing  using  Teac  2.88Mb  disk  drives 

DJEP_zip  DeskJet  printer  utility,  prints  envelopes 

DJWDEM_zip  Demo  copies;  DiscOVER,  MULTI-DiscOVER,  TexTIDY  &  FLPCIone  -  - 

EMAIL_txt  Known  INTERNET  addresses  of  other  QLers 

FILEIN_zip  Pointer  environment  utility 

FNTSRC_zip  source  files  (SB  and  Metacomco  Assembler)  FontEditor  v.2.3 

FONTED_zip  QL  FontEditor  v.2.3  for  the  Sinclair  QL 

HDRRST_bas  needed  to  restore  file  header  of  some  transferred  files 

HISTDV__zlp  Last  line  recall/history  device  for  QL  jobs 

IBMDSK_zip  Lets  QL  with  TK  2  and  3.5  inch  drives  access  IBM  disks 

LHQ_zip  LHQ  v1 .0  for  the  QL  Another  file  archiver  and  extractor 

MAIL_zip  mail  list  program  for  ARCHIVE 

Minnie__zip  Text  file  detailing  the  Minerva  ROM  1 .93+  features 

MODPSLzip  Some  mods  for  the  PSION  suite  of  software 

POINT_zip  Description  of  setting  up  as  QL  FidoNet  Echo  Point 

PullDown_zip  This  is  a  method  of  creating  PULL-DOWN/POP-UP  screens 

QED_zip  QED  1 .01  A  general  purpose  editor  for  the  QL 

QEM_zip  first?  version  of  QeM 

QEM24_zip  QEM  2.4  early  version  of  QEM 

QEMV32_zip  QEM  v3.2  An  excellent  terminal  program  for  the  QL 

QEM35U_zip  QEM  v3.5  upgrade  files,  upgrade  QEM  3.0+  to  3.5 

QEM36U_zip  QEM  v3.6  upgrade  from  v3.5 

XPRLIB_zip  Latest  XPR  libraries  for  QEM  v3.5.  needed  for  3.5  &  3.6 

QLGIF_zip  Utilities  to  code  and  decode  GIF  files,  by  Carlo  Delhez  (1 993  version) 

QLHD_zip  Information  on  hooking  up  an  IBM  type  MFM/RLL  hard  drive  to  a  QL 

QLIBRT_zip  Qliberator  runtimes  version  3.36 

QLSPIT_zip  ZM-1  Spectrum  Emulator  for  the  QL.  working  demo 

QPACER_zip  QPACER  QPac2  Boot  Generator  Issue  1.1 

QSI_zip  Determine  speed  of  your  QL,  compared  to  QXL,  Gold  Card 


QUADRI_zip  Quadric  Equation  Plotter 

QUILtra_exp  Psions'  QUILL  file  format  explained 

RELYQL_TXr  A  reliable  QLI  Text  describing  modifications  to  the  QL 

RESCUE_zip  Floppy  Disk  Rescue  &  String  Search  Utility 

Ruleta_zip  Roulette  game 

SAVER_LZH  Pointer  environment  screen  saver.  Set  up  as  a  hotkey 

SPECTATR_zip  Spectator  v1 .00  -  A  Spectrum  emulator  for  the  QL 

SPECKE_zip  4  graphic  files  of  the  Spectrum  Computer  keyboard  layout 

VERS_zip  determines  program  info  about  other  QPTR  progs. 

VIEW_LZH  Pointer  environment  utility 

XCHANG_zip  Psion's  QL  Xchange  v3.90  is  now  public  domain 
(Quill,  Archive,  Abacus,  Easal  in  one  package) 

ZXTRICA_zip  Xtricator  v1 .1 0  -  ZX81  emulator  for  the  QL 

Unzip22  Unzip  version  2.2  for  the  QL  (revised)       NEEDED  FOR  THESE  FILES 

UNZIP9_EXE  QL  UnZip  program  Ver  0.96.  by  Jan  Bredenbeek,  exe  form  (early  version) 

ZIPUTLzip  Zip  Utilities  v1 .0.  utilities  for  dealing  with  zip  files 

ZIP22_exe  Zip  version  2.2  for  the  QL.  (The  "ES"  version)  (revised) 

Zip22_txt  Revised  Docs  on  using  Zip2_exe 

FNxxxx_zip  QL  InterNational  FidoNet  Echo  Mail  messages,  14  files  so  far 

QLxxxx_zip  QL  Quanta  BBS  Messages  from  the  UK,  5  files  so  far 


Spectrum/QL  related  files  for  the  PC/Clone 


ENV_bin  ENV_bin  code  compatable  with  QXL  and  SMSQ 

JPP_z!p  Excellent  Spectrum  Emulator  for  386SX  or  greater  PC 

Make_C_zip  C68  files  MAKE  &  CCP  for  the  QXL 

QDIR_zip  Looks  at  QL  disk  DIRs  on  a  PC 

QLSCR_zip  PC  program  to  view  QL  screen  files,  can  convert  to  GIF 

QLTOOL_zip  Lets  a  PC  look/examine  QL  disk 

QXLfmt_zip  for  the  QXL  card.  Convert  a  disk  to  QDOS  format  (same  as  FORMAT?) 

Z80V201  A_zip  1 28K/48K  ZX  Spectrum  Emulator  V2.01  by  Gerton  Lunter 

Z80V201  B_zip  LATEX  and  POSTSCRIPT  DOC  files  for  V2.01  Z80  Spectrum 


QL  related  file  for  the  MAC 


CP2MC1_zip       convert  text/Quiil  files  to  be  used  on  the  MAC 

These  programs  and  files  fill  8  720  disks  and  are  available  for  $8.00  (postage  paid)  from; 
Paul  Holmgren 
5231  Wilton  Wood  Ct. 
Indianapolis,  IN  46254 


QLerk       QLerk       QLerk       QLerk  QLerk 


A  BUSinSS  PIKAICUL  proBru  hj  BILL  CABLI    -    looked  at  hj  Hugh  Howie 


Page  1 


The  heading  may  make  you  think  you  are 
listening  to  a  flock  of  ducks  on  the 
local  millpond,  or  a  skein  of  geese  on 
their  annual  migratory  pilgrimage  flying 
high  overhead.  But  really  "QLerk"  is  the 
name  of  a  program  by  the  renowned  New 
Hampshire  programmer.  Bill  Cable. 

Bill  has  spent  a  lot  of  time,  a  lot  of 
work,  on  this  program,  and  he  has  tested 
it  in  various  businesses  in  his  area. 
The  result  is  a  program  that  will  keep 
your  business  records  in  order,  or  even 
just  your  household  finances  in  order. 
The  only  limitation  on  the  uses  of  this 
program  are  what  the  user  places  on  it 
himself . 

I  was  lucky  in  being  able  to  look  at 
version  2.1,  but  now  I  have  version  3.0, 
and  the  improvement  is  significant.  I 
will  not  mention  the  previous  version 
again,  as  that  would  serve  no  useful 
purpose,  and  I  only  mention  2.1  to  show 
that  Bill  is  in  a  constant  phase  of 
updating  and  improving  the  system,  and 
that  is  what  it  is  -  it  is  a  system  to 
keep  your  records  up  to  date. 

This  would  be  a  good  time  to  mention  that 
the  program  is  vast.  It  is  very  complex, 
very  comprehensive.  It  is  going  to  take 
the  user  some  time  to  get  to  know  the  ins 
and  outs  of  it.  It  is  not  for  the  faint 
hearted,  but  once  you  have  seen  what  it 
can  do  -  you  will  be  impressed. 

This  is  an  Archive  program,  Archive  being 
provided  on  the  program  disk,  but  can 
also  be  run  using  your  own  Archive.  It 
requires  that  you  have  extra  memory,  a 
minimum  of  512K  extra  memory  would  be 
required.  QLerk  will  run  on  a  7 . 5MHz  QL, 
but  slowly.  The  Trump  Card  much  better, 
the  Gold  Card  being  best  of  all  because 
of  its  extra  speed  of  operation. 

Disk  drives  are  essential,  MDV  could  not 
possibly  hold  everything.  QLerk  will  run 
from  two  720  disks.  Or,  if  you  have  HD 
or  ED  drives  or  a  hard  drive,  it  could 
all  be  run  from  the  one  disk.  The 
options  are  there  for  your  own 
configuration . 


taking  you  through  the  example  setup  on 
the  disk,  one  keypress  at  a  time. 

The  demo  starts  off  by  telling  you  how  to 
make  your  first  backup  of  the  program 
disk,  and  takes  you  through  each  and 
every  step  to  get  the  demo  up  and 
running.  You  are  shown  how  to  use  the 
Menus .  How  to  check  what  payables  are  in 
the  system,  and  how  to  make  payments. 
How  to  handle  receivables »  how  to  write  a 
cheque,  make  purchase  orders ,  invoices, 
get  various  reports  from  the  system. 

Once  you  have  run  the  demo  a  couple  of 
times,  you  will  have  an  excellent  idea  of 
how  the  whole  system  operates. 

The  Manual  is  easy  to  read  and  follow. 
It  describes  the  various  Program  Modules 
and  what  each  contains  and  does. 

The  whole  is  menu  driven  and  there  are 
about  a  dozen  and  a  half  of  them.  Each 
menu  contains  about  10  ■-  12  options,  it 
varies,  and  each  option  has  its  own  set 
of  options. 

Here  is  what  the  Main  Menu  looks  likel- 


Ocitabass  i  flpLnHHjan  rm 
Current  Gro-p  ;  eld 


JPayiiil.e  ffic«ie.... 

Irfv'enlonj  wm,, 
Load  i^lif.e. 
ii^thily  to  ijoup. 

Group...  

ftain  database., 
Support  file. 
Backup^^reffiost 
Dirfictwy.,.,., 

Other  

Mi..  


uork  on  e;<pen«s  ({:>ayi3bles,pirchrje  orders  jpoyients) 
ycfk  ofi  reveftues  toiMc^les,ir)Vuice>,incoiie)  i  bcrik/'til 
iiork  on  iri',>entonj 

report  rfodute,  address  wM.p,  systeif!  K-duie 
brinq  monthly  (reaastersd)  records  to  gc-^i  for  inspectioi 
edit  (vieUjd-MjHje)  ,m-<^  into  si^jiri,icike  rieu  gt-'jup 
edit  wieu  only),  bring  records  to  group ,to  uork  on 
ejit  (yieu,d-ii3ni3e,adij)  address,ccite90rij,ites,duty,ijser 
t-acki^)  data  i  opt  ion  ly  pijrge  ckited  records  to  lonthiy  filj 
directo^'-y  a  device  uithi  copy  and  delete  optioris 
print  (abet, copy  files  hoie,help  info,new  user,r«creen 
qijit  M  uith  option  to  halt  ffi?CHIUE  Mj-o 


I  iJ-se  key  f^n  cjr  1-9  or  CfS'  to  choose  and  <£NTER)  to  accept  | 


To  start  with,  there  is  an  excellent 
manual    which   contains    a   wonderful  demo 


33 


QLerk       QLerk       QLerk       QLerk  QLerk 


A  BOSmSS  FHAMCUL  pro|r««^ JIU  CABM^^^^  at  hj  Eugh  Howie 

taken  care  of. 


Page  2 


Now  to  keep  track  of  all  those  Menus, 
could  be  a  formidable  task,  but  there  is 
a  complete  page  allocated  to  each  menu. 
That  page  starts  off  with  a  screen  dump 
of  what  the  menu  looks  like,  just  as  I 
did  above,  and  there  is  an  explanation 
under  the  dump,  telling  you  what  occurs 
there.  This  Screen  dump  method  of 
displaying  the  menus,  means  that  you  can 
refer  to  the  manual  for  a  particular 
menu,  and  see  what  it  does  for  you.  Thus 
helping  you  decide  whether  to  go  back  or 
forward  to  complete  a  task. 

The  facility  on  each  menu  can  be  selected 
in  a  number  of  ways .  You  could  use  the 
up/down  arrow  and  ENTER,  or  you  could 
select  by  the  key  letter  of  the  facility, 
or,  if  you  can  remember  the  number  of  the 
facility  required,  you  can  make  the 
selection  by  number! 

Should  you  at  any  time  get  out  of  QLerk 
by  pressing  ESC  by  mistake,  just  type  'm* 
and  you  will  be  back  into  the  Main  Menu, 
so  all  is  not  lost. 


You  want  a  hard  copy  of  some  aspect  of 
the  business?  By  date?  By  occurrence? 
Frequency?  How  often  has  someone  done 
business  with  you  this  last  few  weeks? 
months?  You  name  it,  and  you  will 
probably  find  the  information  is  in  there 
somewhere,  all  you  have  to  do  is  dig  it 
out,  and  with  those  easy-to-use  menus,  it 
is  not  so  difficult. 

There  is  a  complete  Inventory  system  so 
that  you  keep  track  of  everything  in 
stock.  Does  its  own  value  evaluation  for 
you.  Enter  Item,  Price,  and  Number,  and 
everything  is  taken  care  of. 

No  matter  what  you  do,  it  is  almost 
impossible  to  make  an  error.  For 
example,  when  you  make  some  entries,  you 
are  asked  if  you  wish  the  entries  to  be 
merged,  and  you  must  answer  with  Y  or  N, 
thus  you  always  have  the  opportunity  to 
make  corrections  BEFORE  the  documents  are 
altered  or  changed. 


The  system  is  completely  inter-active,  in 
that  an  entry  made  in  one  mode,  is 
transferred  to  all  other  modes  where  it 
is  required,  so  that  if  a  payment  is  made 
by  cheque,  the  money  is  removed  from  the 
bank  account,  the  account  is  reduced 
accordingly.  Where  the  money  went  and 
where  it  came  from,  is  all  recorded 
automatically.  One  aspect  that  Bill 
mentions  in  his  manual,  will  show  just 
how  interactive  the  system  is.  If  you 
were  to  pay  an  account  by  VISA,  the 
account  would  be  paid,  and  the  system 
would  make  out  a  new  account  showing  that 
you  owed  VISA  that  amount. 

The  system  can  handle  up  to  five  cheque 
writing  accounts  at  the  same  time.  Plus 
two  or  three  cash  registers. 

The  cheque  is  filled  out  by  the  printer, 
and  an  address  label  printed  ready  to  be 
pasted  to  the  envelope.  Everything  is 
optional  to  your  own  requirements. 

Payables,  Receivables,  Purchase  orders. 
Cheques,  Invoices,  are  all  available. 
Inventory  control ,  Bank  Accounts ,  Cash 
Registers,  Taxes,  Duties,  Deductions, 
Cyclical   payments    /   receivables   are  all 


If  you  have  any  questions  to  ask  about 
this  program,  why  not  write  to  Bill, 
after  all  he  can  answer  much  better  than 
I  can,  and  he  is  always  willing  to  help. 

His  address  isl- 

Bill  Cable 

Wood  and  Wind  Computing 
RR  3.  Box  92 
Cornish,  NH  03745.  USA 
Phone  (603)  675-2218q 


34 


CABLE  COLUMN 

By  Bill  Cable 

ARCHIVE  SERIES 
PART  15  :  ENTERING  QUERY  -  A  PROGRAM  TO 
INTERROGATE  ANY  ARCHIVE  DATABASE 

The  program  (collection  of  procedures)  listed  below  when 
merged  with  the  procedures  we  have  entered  up  until  now 
gives  us  a  useful  program  that  can  define  and  execute 
complex  searches  in  any  ARCHIVE  database  using 
simple  menus.  It  allows  us  to  not  only  find  records  by  the 
occurrence  of  text  vsrithin  a  record  but  also  by  the  fields  of 
a  record  meeting  specified  criteria.  For  instance  we  could 
query  the  GAZET_DBF  supplied  with  ARCHIVE  for  all 
countries  with  high  population  densities  which  we  might 
define  from  menus  as  (area/pop)<5.  We  can  view  and 
print  out  the  results  of  each  query.  Besides  being  a  fun 
program  to  play  with  it  provides  us  with  ARCHIVE 
statement  building  procedures  which  will  be  very  handy  for 
later  programs. 

In  this  issue  of  UPDATE  you  will  find  a  review  of  my 
financial  program  QLerk  by  Hugh  Howie.  He  kindly  agreed 
to  be  one  of  my  Beta  testers  and  put  together  his 
experiences  in  the  review.  As  he  mentions  it  is  a 
comprehensive  program  and  not  for  the  casual  user. 
Financial  programs  are  like  that  as  you  can't  half  do  them. 
They  depend  on  a  consistent  and  steady  supply  of 
information  and  are  of  little  use  if  not  so  used.  QLerk  has 
changed  very  little  in  the  past  8  months  since  it  has  been 
released  (on  a  very  low  key  basis)  as  it  has  proved  to  t>e 
very  dependable.  Unfortunately  I  haven't  completed  a 
comprehensive  manual  yet.  It  is  currently  almost  50  pages 
but  should  be  close  to  100  when  it  covers  all  features  in 
detail.  I  am  now  worthing  hard  on  the  manual  after  hardly 
touching  it  since  the  Miracle  in  Newport  Fest  because  of 
other  commitments.  If  you  are  Interested  In  the  program 
please  contact  me.  I  am  selling  It  for  $75.  For  the  time 
being  until  more  detailed  reviews  and  advertisements  are 
available  I  am  willing  to  let  potential  users  inspect  the 
program  before  purchasing  it.  I  have  no  desire  to  sell  it  to 
people  who  won't  use  it  but  I  have  to  protect  my  very  large 
investment  of  time  in  its  development  and  future  support 
for  the  very  small  potential  QL  market 

PREPARATION 

Start  ARCHIVE  in  your  customary  way  so  you  see  the 
ARCHIVE  command  prompt  (>).  Load  the  group  of 
procedures  entered  last  time  and  saved  in  a  file  called 
"groups".  Start  the  editor  and  first  modify  "by.an'ow"  and 
"field_dispiay"  procedures  that  have  small  changes  and 
then  enter  the  new  procedures.  I  have  removed  indentions 
in  order  to  make  the  listing  fit  compactly  In  this  listing. 
Save  this  old  and  new  wori<  in  a  file  called  "query".  To  run 
first  load  "query"  and  type  "query"  to  start. 


LISTING  OF  PROCEDURES  WITH  CHANGES 

proc  by_anrow;sl,nl,sc,nc.bw.6$,ap 

rem 

rem  Choose  by  moving  arrow  over  options  drawn  on  screen  and 

pressing  <ENTER> 

rem 

rem  Passed  arguments  defining  screen  area  in  blocks  of  rows 
and  columns 

rem  si  -  start  line,  nl  -  number  of  lines 

rem  sc  -  start  column,  nc  -  number  of  columns 

rem  bw  -  block  width  for  choices  on  screen 

rem  s$  -  string  of  key  characters,  ap  -  at  position  (between  1  and 

nl*nc) 
rem 

rem  Local  Internal  variables 

rem  nl  -  becomes  end  line  number,  al  -  at  line  (current  line) 

rem  ac  -  at  column  (current  column),  il  -  last  line  position 

rem  Ic  -  last  column  position,  es  -  length  of  key  string 

rem  i$  -  key  press  character,  I  -  key  press  character  ASCII  code 

rem  k  -  acceptable  key  press  flag 

rem 

rem  Global  returned  variable 

rem  ans  -  returns  choice  value  as  position  in  s$  or  0 

rem 

rem  Uses  s$  length  (es)  to  keep  within  defined  boundaries 
rem 

local  a!,ac,ll,lc,es.i$,i.k 

if  ap<1  or  ap>nrnc:  let  ap=1;  endif :  let  nl=sl+nl-1 
print  rv$; 

let  al=st+int((ap-1  )/nc):  let  ac=sc+((ap-(al-sl)*nc)-1)*bw 

let  lt=al:  let  lc=ac:  print  at  al.ac;chr(14);"";:  let  es=len(s$) 

let  i=0:  while  i<>30  and  i<>48:  let  i=0:  let  i$=upper(getkeyO) 

if  ap<es:  let  k=instr(s$(ap+1  to  es),i$):  else  :  let  k=0:  endif 

If  not  k;  let  k=lnstr(s$,i$):  else  .  let  k=k+ap:  endif 

if  not  k:  let  i=code(i$);  if  i>48  and  i<58:  let  k=i-48 

if  k>es:  let  k=0:  endif :  endif :  endif 

if  H:  letal=int((k-1)/nc+1):  letac=(k-(al-1)*nc)*bw+sc-bw:  let 

al=al+sl-1 

else  :  if  1=30  or  1=48:  let  k=i 

else  :  if  i=2:  letk=i:  letal=al-1 

if  al<sl:  let  al=nl-  endif :  else  :  if  i=3:  let  k=i:  let  al=al+1 

if  al>nl:  let  ai=sl:  endif 

else  ;  If  i=4:  let  k=i:  let  ac=ac+bw 

if  ac>sc+bw*(nc-1);  let  ac=SG:  endif 

else  :  if  1=5:  let  k=i:  let  ac=ac-bw 

rf  ac<sc:  let  ac=sc+bw*(nc-1 ):  endif :  endif :  endif :  end'rf :  endif 
if  nc*(al-sl)+(ac-sc)/bw+1>es:  let  ac=sc:  let  al=sl:  endif :  endif : 
endif 

if  lloai  or  icoac:  print  at  li.Ic;" ";:  let  ll=al:  let  lc=ac:  endif 
let  ap=(al-sl)*nc+(ac-sc)/bw+1 

if  k:  print  at  al.ac;"";:  else  :  print  at  al.ac;"?";:  endif :  end\rt^ile 

if  1=48:  print  at  al,ac;"0";rv$;chr(15); 

else  :  print  at  al,ac;"+'';rv$;chr(15);:  endif 

let  al=al-sl+1 :  let  ac=(ac-sc)/bw+1  :rem  let  ans=10*al+ac 

if  1=48:  let  ans=0:  else  :  let  ans=ap:  endif 

endproc 

proc  field_display;l$,sl,nl,sc,nc,bw,fw 

let  n=0:  let  al=sl:  let  ac=sc:  let  cc=1:  tet  fldjist$="":  while 
n<numfld() 

let  i$=fieldn(n,l$):  If  len(i$)>fw-2:  let  l$=l$(1  to  fw-2):  endif 
if  len(i$)=1:  let  l$=upper(i$) 
else  :  let  i$=upper(i$(1))+lower(i$(2  to  len(i$))):  endif 
let  fldjist$=fldjist$+i$(1 ) 


35 


print  at  al.ac.iS;:  let  n=n+1 ;  let  cc=cc+1 

If  cc>nc;  let  ac=sc  let  al=al+ 1 .  let  cc=1 ;  else  :  let  ac=ac+bw:  endif 

endwhile 

en  dp  roc 

LISTING  OF  NEW  PROCEDURES 

proc  arrow_clr 

print  chr(8),rv$i"  ";rv$, 
endproc 

proc  arrow_mess;m$ 

clx;21,rv$::  let  l=(80-(21+len(m$)))/2 

print  at  22,1  ;n/$;  tab  i;"Move  arrow  to  choose  "+m$;  tab  79; 

print  at  23,1 ;  tab  25;"<ENTER>  to  select  or  0  to  exit",  tab  79,rv$; 

endproc 

proc  clx;n.r$ 

print  at  n,0;r$;cs$i  at  n,1  ;r$; 

endproc 

proc  do_tmp;c$ 

let  l$=sd$+"tmp_tmp":  kill  i$:  spoolon  i$  export 

Iprint  "proc  tmptmp" 

Iprint  c$;  Iprint  "endproc":  spooloff 

merge  i$:  error  tmp_tmp:  if  ermum():erTy;23,"searching" 

let  1$="":  endlf 

endproc 

proc  field  _plck;m$ 

anrow_mess;m$;by_an^ow;1,fld_rows,0,fld_cols,fld_wid,fldjist$,1 

anrow_clr 

endproc 

proc  fleld_size_1 

use  "s":  let  n-numfld() 

if  n<29:  let  j=2:  let  k=20;  else  :  if  n<43:  let  j=3:  let  k=20 
else  :  if  n<57:  letj=4  letk=15:  else  :  if  n<71;  letj=5:  let  k=15 
else  :  if  n<85:  let  j=6:  let  k=1 3:  else  :  if  n<99:  let  j=7:  let  k=1 1 
else  :  if  n<1 13:  let  j=8:  let  k=9:  else  :  if  n<127:  let  j=9:  let  k=8 
else  :acky;23,'Too  many  fields  to  display":get_files:  stop 
endif :  endif :  endif :  endif :  endif :  endif :  endlf :  endif 
let  i=int{(n-1)/j+1) 

let  fld_rows=i:  let  fld_cols=j:  let  fld_wid=k 

endproc 

proc  prt_end 

if  prt:  Iprint :  Iprint :  Iprint  "Query  completed  with  ";cnt;"  matches" 

endif 

endproc 

proc  prt_head;m$ 

if  prt  and  l$<>'"':msg;23,"printing" 

Iprint  "QUERY  OF  ARCHIVE  DATABASE  "+sd$+sn$; 

Iprint  tab  65;date(0) 

Iprint  tab  65;count();"  records" 

Iprint  "Query  : ":  Iprint "  ";m$:  Iprint :  endif  :liny;23 

endproc 

proc  prt_record 

if  prt:  Iprint  tab  70;cnt;"  -  ";recnum() 

if  prt=1:  if  d1>-1:  Iprint  fjeldn(dl);" :  ";fieldv(d1):  endif 

if  d2>-1:  Iprint "  ";fieldn(d2);" :  ";fieldv(d2);  endif 

if  d3>-1:  Iprint "  ";fieldn(d3);" ;  ",fieldv(d3):  endif 

else  :  let  i=0:  while  i<numfid():  Iprint  fieldn(i);" :  ";fieldv(i):  let  i=i+1 

endwhile  :  endif :  endif 

endproc 

proc  query 

mode  0:setup:  error  close_ail 

heady;"Query  an  ARCHIVE  Database" 

print "  1  The  source  database  will  be  looked  at  (not  altered)." 

print "  2  For  An-ow  Menus  use  arrow  keys,  1-9,  or  a-z  of  capped 

letter  in" 


print "   choice  for  picking  selection  then  <ENTER>  to  activate  " 
print "  3  You  can  Query  the  database  by  matcing  text  within  a 
record  (Find) " 

print "  4.  You  can  Query  the  database  by  building  from  menus  a 
true/false" 

print "   statement  using  fields  of  the  record  and  ARCHIVE 
functions  and  then" 

print "   searching  for  records  for  which  the  statement  is  true " 
print "  5  Statements  have  values  which  are  either  TEXT  or 
•NUMBER'  Only" 

print "  Numeric  statements  can  be  searched  and  nonzero  is 
tme,  zero  false." 

print "  6.  Up  to  3  statements  can  be  stored  in  slots  to  be  used  in  a 
search" 

print "   or  used  for  building  more  complex  statements." 
print "  7  Only  3  fields  of  a  record  are  displayed  but  are  user 
selectable " 

print "  8.  Matches  can  be  manually  or  automatically  stepped 
through " 

print "  9.  Output  goes  to  the  screen  and  can  go  to  the  printer 
also." 

print  "10.  A  temporary  file  'tmpjmp'  may  be  written  to  source 
device." 

device  ;21, "Device  where  source  database  is  located  eXit  to 
stop" 

if  ans$="":  mode  1 :  stop  :  endif :  let  sd$=ans$:  dir  sd$ 
inpy;23,"  File  name  of  source  database  (with  extension)" 
let  sn$=ans$ 

if  sn$="":query  return  :  endif 

if  instr(sn$ ,"_")>  1;  let  sn1$=sn$(1  to  instr(sn$,"_")-1 ) 

else  ;  Ietsn1$=sn$:  let  sn$=sn$+"_dbf';  endif 

error  looky;sd$+sn$,"s":  if  ennum():en7;23,"accessing  "+sd$+sn$ 

query:  return :  endif 

Ietd1=0:  Ietd2=-1:  Ietd3=-1:  if  numfld()>1:  let  d2=1:  if  numfld()>2 
Ietd3=2:  endif:  endif 

let  s1$="":  let  t1$="":  let  s2$="":  let  t2$="":  let  s3$="":  let  t3$="" 
field_size_1 :  mode  0 

print  rv$;  tab  5;"Fields  of  ";sd$+sn$;  tab  67;count();"  records" 

field_display;"s",1.fld_rows,1.fld_cols,fld_wid.fld_wid:  print  rv$; 

letprt=0:  while  1:  first  :clx;16,rv$:show_record:clx;21,rv$:  letl$='"' 

if  prt:  let  i$="on":  else  :  let  i$="off ':  endif 

print  rv$;  tab  24;"  Query  Options";  tab  72;"prt  ";i$ 

print"  Find      Search     Build     Display    Print  Quit";rv$; 

by_anrow;22.1 .1 .6.12,"FSBDPQ".1 

if  ans=0  orans=6:  error  dosejall:  mode  1:  stop :  endif 

if  ans=1  or  ans=2:  if  ans=1:inpy;23,"Flnd  what":  let  l$=ans$ 

prt_head;'Tind  '"+!$+ :  if  l$<>'"' 

clx;16,rv$:  print  rv$;"Finding  "';l$;""';rv$:  find  1$:  endif 

else  :stm_display:stm_j)ick 

if  l$- "':acky;23,"Build  a  search  statement  first" 

else  :  if  t$='TEXT':acky;23,"Can't  search  with  TEXT  statement" 

letl$="" 

else  :prt_head;"search  "+l$:clx;16,rv$:  print  rv$;"Search  ";l$;rv$ 
en-or  do_tmp;"search  "+l$:  if  emium():eny;23,"search" 
let  1$="":  endif 

endif :  endif :  endif :  if  !$<>"":  if  not  found():acky;23,"Not  found" 
else  ;  let  ans=1 :  let  qy=1 :  let  cnt=0 
while  ans=1  and  found()  and  not  eof() 
show_record:  let  cnt=cnt+1 

print  at  23,53;"Match  #  ";cnt;"  Rec  #  ",recnum(); 
prt_record.  if  qy 

printat23,1,rv$;"  Continue   Automatic  eXit",rv$, 
by_arrow,23,1,2,3,12,"CAX",1:  endif:  if  ans=1  orans=2 
continue  :  endif :  if  ans=2:  let  ans=1:  let  qy=0:  endif :  endwhile 


36 


if  ansoO  and  ans<>3  and  1S<>"" 

acky;23,"Done  after  "+str(cnt.2,0)+"  matches" 

prt_end  endif  endif :  endif 

else  if  ans=3:stm_display;stm_build 

else  If  ans=4  Ietd2=-1:  Ietd3=-1 

let  j$="  field  to  display" 

field_pick,"First"+jS  let  d1=ans-1  show_record 
field _pick,"Second"+j$  let  d2=ans-1.show_record 
show_record  field _pick;"Thjrd"+j$:  let  d3=ans-1 
else  :  if  ans=5.  if  prt  let  prt=0 

else  yom,23, "Print  3  fields  like  display  rather  than  all  fields" 
if  ans$="y".  let  prt=1 :  else  :  let  prt=2:  endif 
endif .  endif :  endif :  endif :  endif :  endwhile 
endproc 

proc  show_record 

clx,18,""  if  d1>=0'  print  fieldn(d1);" :  ";fleldv{d1):  endif 

if  d2>=0  print "  ";fieldn(d2);" ;  ";fieldv(d2):  endif 

if  d3>=0  print "    ",fieldn(d3)," :  ",fieldv(d3)  endif 

endproc 

proc  stm_build 

while  1:clx;21,rv$:  print  rv$;  tab  16;"Statement  Building" 

print "  Build  a  new  statement     eXit  statement  building";rvS, 

by_arrow,22, 1,1, 2,28, "BX",1  if  ans=0  or  ans=2:  return  :  endif 

if  ans=1  stm_constnjct,"First  Part" 

if  1$="";  retum  ;  endif :  let  la$=l$:  let  1$="":  let  ta$=t$:  let  t$="" 

stm_construct;"Second  Part':  let  lb$=l$:  let  tb$=t$ 

if  (ta$<>tb$)  and  lb$<>"" 

acky:23,"1st  and  2nd  Statement  parts  have  mismatched  types" 

let  ta$='"'  let  lb$=""-  endif 

if  lb$<>"":  let  iS="Relate  ("+la$+")  to  ("+lb$+")" 

if  len(iS)>70  leti$=i${1  to  70)+"  "  endif  clx,21,rv$ 

print  rv$,i$,"  by  ",  at  22,0,"  =<>>>=<<=  +" 

let  i$="=<>=<=+":  if  ta$-TEXr';  let  i=1:  else 

print"  -     *     /     ^     And    Or  eXit" 

let  i=2:  let  i$=i$+"-*/^AOX":  endif 

print  rv$,  by_arrow,22, 1,1,7, 7,i$,1 

if  ans  and  ans<>14:  let  i$=i$(ans):  if  ans=2::  let  i$=i$+">" 

else  if  ans=4  or  ans=6:  let  i$=i$+"=" 

else  if  ans=12  let  i$="  and  " 

else  if  ans=1 3.  let  i$="  or ";  endif :  endif :  endrf :  endif 

let  IS="("+la$+iS+lb$-t-")" 

if  ans=7  and  ta$='TEXr':  let  t$=ta$ 

else  :  let  t$="NUMBER"::  endif ;  endif 

else  let  l$=la$:  let  t$=ta$  endif 

if  l$<>"":clx,21,rv$:  print  rv$;"New  statement :  ";l$ 

yom,23,"Put  new  statement  in  statement  slot";  print  rv$, 

if  ans$="y":stm__put 

endif  endif ;  endif :  endwhile 

endproc 

proc  stm_construct;m$ 

clx,21,rv$ 

print  rvS;  tab  7, "Building  new  statement :  "+m$+"  starts  with" 

print"  Field       Text       Number      Statement  Bypass";rv$; 

by_arrow,22,5,1,5,14."FTNSB",1 

let  1$='"';  let  t$="":  if  ans=5  or  ans=0::  retum  ::  endif 

if  ans=1  field_j)ick;"Field  for  statment" 

ifansoO  let  ans=ans-1:  let  l$=fieldn(ans) 

iffieldt(ans)  let  t$='TEXT':  else  :  let  t$="NUMBER":  endif ;  endif 

else  :  if  ans=4;stm_pick 

else  if  ans=2.  let  t$="TEXr:  else  let  t$="NUMBER":  endif 
print  at  23, 1  irvS,"  Enter  "+lower(t$)+" :  ";rv$," ";:  input  i$.  let  l$=i$ 
if  t$="TEXr':  let  IS=""'+I$+"'":  endif ;  endif :  endif 
let  i$=IS:  if  len(iS)>45;  leti$=i$(1  to  45)+"..":  endif 
if  t$="TEXr':stm_textii$:  else  stm_number;i$:  endif 


endproc 

proc  stm_display 

clx,16,rv$  print  rv$,"  Slot  Type  Statement";rv$; 

stmjine;1,s1$,t1$ 

stmjine;2,s2$,t2$ 

stm_line;3,s3$.t3$ 

endproc 

proc  stm_line;l,l$,t$ 

if  len(l$)>60:  letl$=l$(1  to  60)+".;':  endif 

if  len(t$)  let  i$=t$(1);:  else  :  let  i$="":  endif 

print  rv$,  at  16+l,3;l.  tab  9,1$;  tab  15,1$;  tab  79;rv$; 

endproc 

proc  stm_numberm$ 

clx;21,rv$:  print  rv$;"Modify  ("+l$+")  with  which  function  : 

print  at  22,1;"  None    AbsQ    Chr()    IntQ    Sgn()  Str()"; 

print  rv$;:by_an-ow;22,1 ,1 ,6,9,"NACISS",1 

if  ans<2:  return  else  :  if  ans=2:  let  l$="abs("+l$+")" 

else  if  ans=3:  let  l$="chr("+l$+")":  lett$="TEXT" 

else  :  if  ans=4  let  l$="int("+l$+")" 

else  ;  if  ans=5;  let  l$="sgn("+l$+")" 

else  :  if  ans=6;  let  l$="str("+l$+",3,0))":  let  t$="TEXT" 

endif :  endif :  endif :  endif :  endif :  endif 

endproc 

proc  stm__pick 

an'Ow_mess;"Statement 

slot":by_an-ow;17, 3,2,1, 20,"123".1;arrow_clr 

if  ans=0:  retum  ;  endif 

let  i$=str(ans,2,0)+"$":  let  l$=value("s"+i$):  let  t$=value{"t"+i$) 

endproc 

proc  stm_put 

arrow_mess, "Choose  slot  for  new  statement" 

by_arrow;  17,3,2,1 ,20,"1 23",  1  :arrow_clr 

if  ans=0:  retum  ;  endif ;  let  t4=1 :  if  ans=1:  Iets1$=l$;  Iett1$=t$ 

else  ;  if  ans=2:  let  s2$=l$:  let  t2$=t$:,  else  :  let  s3$=l$;  let  t3$=t$ 

endif :  endif .  stmjine;ans,l$,t$ 

endproc 

proc  stm_text;m$ 

clx,21,rv$.  print  rv$, "Modify  ("+m$+")  with  which  function  ; "; 

print  at  22.1 ."  None  Code()  lnstr()  Len()  Lower()  Upper()  Substr"; 

print  rv$;:by_an-ow;22,1.1,7,9."NCILLUS".1 

if  ans<2:  return  :  else  :  if  ans=2:  let  l$="code("+l$+")":  let 

t$="NUMBER" 

else  ;  if  ans=3:clx;21 input  at  22,1;"Text  for  instrQ  test :  ";i$ 

let  i$=""'+i$+""':  let  t$="NUMBER" :yom;23,"ls  "+i$+"  the  substring" 

if  ans$="y";  let  l$="instr{"+l$+","+i$+")" 

else  :  let  l$="instr("+i$+","+l$+")":  endif 

else  :  if  ans=4:  let  l$="len("+l$+")";  let  t$="NUMBER" 

else  ;  if  ans=5;  let  t$="lower("+l$+")":  else  ;  if  ans=6 

let  l$="upper("+l$+")" 

else  :clx,21,""  inpy;22."Beginlng  position  for  substring  " 
let  i=val(ans$) 

inpy;23,"Ending  position  for  substring  ":  let  j=val(ans$) 

if  i>0  and  j>=i  and  j<255;  let  l$=l$+"("+str{i.2,0)+"  to  "+str{j.2,0)+")" 

endif ;  endif :  endif :  endif :  endif :  endif :  endif 

endproc 

Sorry  that  there  is  no  detailed  documentation  within  most 
of  these  procedures  but  time  and  space  prohibit  it.  The 
Cable  ARCHIVE  Issue  Disk  has  been  updated  to  include 
the  groupl,  group2,  groups,  and  query  programs  covered 
in  UPDATE  plus  matcher,  replace,  and  windex  procedures 
covered  in  IQLR.  Next  time  another  useful  ARCHIVE 
program.  Until  then,  Happy  Archiving! 


100  REMark 
********************************************************** 

..r.     r.T.w     1      u.  A-DEE-DOO-DAH  1.0 

110    REMark  * 


120    REMark  * 
* 

130    REMark  * 


by    Al  Feng 
AN    UNZIP    FRONT  END 


140    DATA_USE    RAM1_:    REMark    ********  SAVE    as  "DooDah_BAS" 

********* 

150  F$="_FLIST_iinp"    :   t$="xxx"    :   S$="xxx"   :  W$="l" 
160  pn=0   :   POKE  163890,0   :   MODE  0 

170  WINDOW#2,512,256,0,0    :    PAPER#2,7    :    BORDER#2,l,7  :INK#2,0 
CLS#2      :      WINDOW#0,413,10,50,241      :      PAPER#0,7      :      INK#0,0  : 
WINDOW     462,250,25,3      :     0PEN#3 , scr_458x200a27x48      :  PAPER#3,7 
0PEN#4,scr  :  u$="  A-DEE-DOO-DAH  "   :  AT#2,21,4  : 

PRINT#2,u$;"   by  Al   Feng   "\T0   4;"        1994      PLATYPUS   Software  " 

PAUSE  30 

180  PAPER  7   :   BORDER  1,7   :   CLS   :   CL  :   Ine  :  AT  0,7   :  PAPER  5 

INK  0    :   PRINT"  SELECT_DEVICE  "    :  cj 

190  DEFine  PROCedure  CLSc   :   BLOCK  458,225,0,10,0   :   END  DEFine 
200    DEFine    PROCedure    CLSd     :     BL0CK#2 , 330 , 10 , 83 , 240 , 7     :  END 

DEFine 

210  DEFine  PROCedure  CLSe  :  BLOCK  458 , 190 , 0 , 45 ,pn  :  END  DEFine 

220  DEFine  PROCedure  sx  :   DIM  Z$(40,48)    :  DELETE  t$&W$&F$ 

230  0PEN_NEW#6,t$&W$&F$ 

240  DIR#6,t$&W$&"_"    :  CL0SE#6 

250  0PEN_IN#7,t$&W$&F$    :    FOR  c=0  TO  40 

260   IF  EOF (#7)   THEN  EXIT  C 

270  INPUT#7,Z$(c)    :   END  FOR  c   :  CL0SE#7   :  c=c-l   :   END  DEFine 

280     DEFine    PROCedure    sw     :     IF    W$<=8    THEN    g$=W$-l  : 
IF  W$>=1  THEN  h$=g$+2 

290  IF  g$=0  AND  t$=»»flp»»  THEN  LET  tl$=»»rain"   :  ELSE 
tl$="flp"   :   END  IF     :  gl$=l 

300  IF  g$>0  THEN  tl$=t$   :  gl$=W$-l   :   END  IF 

310  END  DEFine 

320    DEFine    PROCedure    Rx    :     INK#3,7    :    PAPER#3,0    :    AT    2,9  : 

PRINT  t$;W$;"_"   :   FOR  a=0  TO  18 
330  IF  a<l  THEN  a=a+a 

340  FOR  n=l+a  :  AT#3,a,0  :  PRINT#3 , " { " ;CHR$ (n+a+48 ) ; " } 
";Z$(n+a+l) 

350  FOR  n=2+a  :  AT#3,a,38  :  PRINT#3 ,"{" ;CHR$( n+a+48 );" } 
";Z$(n+a+l) 

360  NEXT  a  :   END  FOR  a  :  rx2   :   END  DEFine 

370  DEFine  PROCedure  rx2   :   BLOCK  18,1,0,236,7   :  BLOCK 
18,1,0,247,7   :   BLOCK  4,12,20,236,7   :  BLOCK 
413,1,20,236,7    :   BLOCK  413,1,20,236,7   :  BLOCK 
413,1,20,247,7    :    BLOCK    2,12,456,236,7     :    STRIP#2,7    :  AT#2,24,4 
INK#2,0     :     PRINT#2,"     *-     "     :     BLOCK     2,13,18,235,5     :  AT#2,24,8 
INK#2,2      :      PRINT#2,tl$&gl$;"_"T0     71;t$&h$;"_"      :  AT#2,24,78 
INK#2,0   :   PRINT#2,"-»-  "   :  BLOCK     4,12,432,236,7      :  BLOCK 

6,12,438,236,7   :  BLOCK  18,1,438,236,7  :  BLOCK 

18,1,438,247,7   :  BLOCK  2,12,436,236,5  :  BLOCK 

458,1,0,235,5   :   END  DEFine 


3  8 


380  DEFine  PROCedure  Uu  :  sx   :  pn=0 

390  DEFine  PROCedure  Uv  :  sw  :  Rx  : 

400  DEFine  PROCedure  Uw  :  wx  :  k3  ; 

410  DEFine  PROCedure  pk  :  k=k-48 

420  IF  k=-21  THEN  CLS#2  :  nd 

430  IF  k<=~l  AND  ko-14  OR  k=77  OR  k=78  THEN  Uw 

440  IF  k=-14  THEN  Uw 

450  IF  k>=160  THEN  Uw 


:   CLSe   :   Uv   :   END  DEFine 
k3   :  pk  :   END  DEFine 
pk  :   END  DEFine 


460 

IF 

k=144 

THEN  IF  W$>1 

THEN  W$=W$-1 

:   Uu  : 

ELSE 

iX  : 

Uw 

470 

IF 

k=146 

AND  t$="ram" 

THEN  t$="flp" 

:  a$= 

1   :  Uu 

480 

IF 

k=146 

AND  t$  =  "indv" 

THEN  t$="flp" 
THEN  t$="rain" 

:  a$= 

1   :  Uu 

490 

IF 

k=146 

AND  t$="flp" 

:  a$= 

1   :  Uu 

500 

IF 

k=152 

THEN  IF  W$<2 

THEN  W$=W$+1 

•  Uu  : 

ELSE  : 

iX  : 

Uw 

510 

IF 

k=156 

THEN  W$=W$+1 

:  Uu 

520 
530 


tre=3 


WCh 


INK#2,7 
AT#2,24,36 
PRINT#2,"!  " 


AT#2 , 24 , 29 
STRIP#2,0 
STRIP#2,7 


IF  k=79  THEN  CLS#2   :  Ine 
IF  k=0  THEN  GO  TO  180 
540  END  DEFine 

550   DEFine   PROCedure   wx    :  STRIP#2,2 
PRINT#2,"      ERROR"TO      49; "ERROR      "  : 
PRINT#2,"    WRONG    KEY";     :     INK#2,5  : 
INK#2,0   :   B5   :   CLSd  :   B5   :   END  DEFine 

560  DEFine  PROCedure  iX  :  AT#2,24,35  :  PRINT#2 , "invalid  drive" 
:  B5   :   PAUSE  10   :   END  DEFine 

570  DEFine  PROCedure  k3   :  REPeat  key 

580  k=CODE(INKEY$)    :   IF  k>8  THEN  EXIT  key 

590  END  REPeat  key  :   END  DEFine 

600  : 

610  DEFine  PROCedure  MAIN 

620  BLOCK  458,12,0,0,2  :  STRIP  2 
PRINT"unzip" 

630  BLOCK  458,1,0,11,5   :   BORDER  1,5  : 

640  CLSc  :  STRIP  0  :  INK  2  :  AT  2 , 1 
cr=0   :  Rx 

650  FREE=(PEEK_L( 163856 )-PEEK_L( 163852) -1024) 


AT  0,36 


INK 


BLOCK  458,1,0,235,5 
:    PRINT"  UN-ZIP  "  : 


sw 


660     INK     5     :     AT  2,57 
PRINT"ilobytes" ;    :   INK  7 
670  k3   :  pk 
680  LET  ZIP$=Z$(k+l) 
690  CLS#2 

700       IF       k<c  THEN 
LEN(ZIP$)-4) 

710  CLS#2  :  BORDER#2,l,7 
720  : 

730  DEFine  PROCedure  Bl  : 
740  DEFine  PROCedure  B2  : 
750  DEFine  PROCedure  B3  : 
760  DEFine  PROCedure  B4  : 
770  DEFine  PROCedure  B5  : 
780  DEFine  PROCedure 
458,1,0,10,0   :   END  DEFine 

790  DEFine  PROCedure  nd 

END  DEFine 
800  DEFine  PROCedure  CL 
INK  5   :  AT  0,64 


PRINT  FREE/1024; 


K"; 


INK 


EXEC_W      t$&W$&"_unzip" ; ""&ZIP$ ( 1 


TO 


:  wx   :  MAIN  : 

BEEP  100,10 
BEEP  200,20 
BEEP  900,20 
BEEP  900,40 
B3   :   PAUSE  5 


END  DEFine 

:  END  DEFine 
:  END  DEFine 
:  END  DEFine 
:  END  DEFine 
:  B4   :  END  DEFine 


Ine 


BL0CK#2 , 458 ,1,24,2,0 


PAPER  7 


Ine 


B2 


BLOCK  450,220,0,11,7 
PRINT shift  TAB   '  : 


tre=l 

PAPER 
AT  0,0 


BLOCK 


WCh 


PRINT" 


TAB  -*"; 
PAPER  5 


INK  0    ;    PRINT"      SELECT_DEVICE     UN-ZIP   "TO  57;"  EXIT 


END  DEFine 


810  DEFine  PROCedure  K4  :   PAPER  7   :  REPeat  key 
820  ike=CODE(INKEY$) 

830  IF  ike=9  OR  ike=32  OR  ike=252  OR  ike=253  OR  ike>47  AND 
ike<58     THEN  B3   :  EXIT  key 

840  IF  ike>=58  AND  ike<252  THEN  B4    :  K4 

850  END  REPeat  key  :  END  DEFine 

860  DEFine  PROCedure  Pick 

870  IF  ike=253  THEN  B4   :  PrvW 

880  IF  ike=9  THEN  B3    :  NxtW 

890  IF  ike=252  THEN  B4    :   B5   :   GO  TO  1180 

900  END  DEFine 

910  DEFine  PROCedure  NxtW 

920  tre=tre+l  :   IF  tre=3  THEN  tre=0 

930  WCh  :  END  DEFine 

940  DEFine  PROCedure  PrvW 

950  tre=tre-l  :   IF  tre<0  THEN  tre=2 

960  WCh  :  END  DEFine 

970  DEFine  PROCedure  WCh  :  WIND0W#4 , 186 , 10 , 165 , 14   :   Ine  :  CL 
980  IF  tre=0  THEN  AT  0,7    :   PRINT"  SELECT_DEVICE  "    :   K4    :  Pick 

:  cj 

990  IF  tre=l  THEN  AT  0,22  :  PRINT"  UN-ZIP  "  :  K4  :  Pick  :  CLS 
:  MAIN 

1000  IF  tre=2  THEN  AT  0,57   :   PRINT"  EXIT  "   :   K4   :   Pick   :   GO  TO 

1180 

1010  END  DEFine 

1020  DEFine  PROCedure  cj  :  pn=7  :  CLSe  :  BLOCK  90,100,42,11,0 
:  BLOCK  88,99,43,11,7 

1030  PAPER  7  :  PAPER  5  :  INK  7  :  AT  10,7  :  S$=t$  :  PRINT"  [  " ; 
:  INK  0   :   PRINT  S$&W$;    :   INK  7   :   PRINT"_mode   ]  " 

:  AT  11,7  :  PAPER  0   :  PRINT  u$   :  PAPER  7 

1040  INK  0  :  BEEP  100,29  :  AT  2,9  :  PRINT' "R"  =  rainl_'  :  AT 
4,9  :  PRINT' "F"  =  flpl_'  :  AT  6,9  :  PRINT' "R"  =  indvl_'  :  AT  8,9  : 
PRINT '"O"  =  other' 

1050  S=C0DE(INKEY$(-1) ) 

1060   IF   s=9   THEN   B3    :    CLS#0    :    BLOCK   90,112,42,11,7    :    tre=l  : 

WCh 

1070  IF  s=253  THEN  B4   :   CLS#0   :   BLOCK  90,112,42,11,7   :   tre=3  : 

WCh 


1080 

IF 

s=77 

OR 

s=109 

THEN  t$="indv" 

:  w$="l" 

1090 

IF 

s=78 

OR 

s=110 

THEN 

t$="indv" 

:  W$="2" 

1100 

IF 

s=70 

OR 

S=102 

THEN 

t$="flp" 

W$="l" 

1110 

IF 

s=71 

OR 

s=103 

THEN 

t$="flp" 

•  W$="2" 

1120 

IF 

s=72 

OR 

s=104 

THEN 

t$="flp" 

W$="3" 

1130 

IF 

s=82 

OR 

s=114 

THEN 

t$="ram" 

W$="l" 

1140 

IF 

s=84 

OR 

s=116 

THEN 

t$="ram" 

W$="2" 

1150 

IF 

s=87 

OR 

s=119 

THEN 

t$="win" 

W$="l" 

1160    IF    s=79    OR    s^lll    THEN   WINDOW#0 , 90 , 30 , 69 , 84    :    INK#0,5  : 
AT#0,0,7    :    PRINT#0,"  7    :    INK#0,2    :    AT#0,0,8  : 

INPUT#0,t$;     :     INK#0,5    :    AT#0,0,11    :    PRINT#0,"    _"  : 
INK#0,2   :  AT#0,0,11   :   INPUT#0,W$   :  WINDOW#0 , 413 , 10 , 50 , 241 

1170  sx   :   B5   :   nd   :   END  DEFine 

1180  CLS#2  :  INK#2,5  :  AT#2,24,32  :  PRINT#2,"§  PLATYPUS 
Software" 


40 


JOHN  B.  PEGRAM 
1126  STRADELLA  ROAD 
LOS  ANGELES,    Ck.  9Q>Q>77 


November  2,  1993 


3?9  Walton  Street  Rear 
Lemoyne,   PA.  17043 

Dear  Dave: 

I  loaded  my  copy  of  the  program  "Z88C0M_CL  I '*  from  your 
disk  and  could  never  get  it  to  work  on  the  Z88.  I  did  not 
have  much  time  to  spend  on  it  so  waited  until  I  obtained  a 
copy  of  the  same  program  in  Tim  Swenson 's  "Z88  Source  Book". 
When  I  printed  out  the  two  programs  I  found  four  lines  in  my 
copy  of  your  version  that  were  different  in  the  machine  code 
assembly  portion  of  the  program,  these  are  as  follows  for 
your  information  if  these  lines  are  erronious  on  your  copy  of 
this  program. 


Line      ASCII  text 

3280  LD  HL,  RESND-'CALL  PRTMSG:LD  A,(SEC):CALL  PRTBLKTBLKTRLE 
3280     LD  HL,    RESND:CALL  PRTMSG:LD  A,CSEC):CALL  CRLF 


3380     LD  HL,  SNDCMP.-CALL  PRTMSGSGSRLF 
3380     LD  HH, SNDCMPrCALL  PRTMSG:CALL  CRLF 


4310  LD  IX,  (HDLCM)CM)CLZ 

4310  LD  IX, CHDLCM) :CALL  CLZ 

4390  LD   IX,  CHDLRX)X)XLZ 

4390  LD  IX, CHDLRX) :CALL  CLZ 


Somewhere  in  the  copying  of  this  program  the  above 
errors  crept  in.  When  I  transferred  the  uncorrected  file  to 
the  Z88  and  converted  it  into  Z88com.  bas  it  loaded  with  the 
remark  "unknown  error"  and  bombed  out  when  I  tried  to  run  it. 
The  corrected  copy  loaded  without  an  error  and  works  OK. 

Simcerely  yours, 


4  t 


00  - 

00  - 

M  - 

0)  - 

u>  - 

P  - 

v    

n  - 

E  I 

o  - 

U  I 

0  I 

H  - 

k—  — 

o  - 


-o  o 


uj3y  HI 

COZ§Q 


u 


C  I-  l. 

C  Ol  i- 

V  -Q  L. 
CX  C  41 

<D  a  4-' 
I-  c 


I-  (D 


I?  " 

—   <0  1- 

3  8^ 


0)  .1:! 


1? 


^  CO 


£  8  SI 

(A  < 

H  (. 

(.  (.  a>  1 

a  41  4-<  < 


^■8  J 


£  y  3 

(0 


^-5  a 
"3  «  ft) 


1 


i5  i 


8    <0  ^  — 


2  8 


'-8  ' 

°  S  ^ 


ill 

<u  o 


9  —  a     a.  H-  a 


1^^ 


«->«««_         I.  c 

z  -  ^      ,?  :^  S 


ft*  L.  3 
«-    C  > 

22  ? 


5^  "8 

a>  o 


MUX 


15 


51 


a 

> 


00 

O 
OQ 


I 


8  §  ^  CO  § 


-2 


W    •  M  +J  JZJ 


CS  OQ  H 


> 

Q 


OOmOQQOQ 

ooojoooino 
>  ot 


o 


00 
00 
N 


</)  0) 

z  t2EE 

O  u.       <D  CO  CO 

r:  0)  CO  >  <i> 
<  CO  W  CC  CL  CL  >  N  03 


O  K  O  O)  o  o  K 

lO    CO  w  lo  in  K 

CM  W  CM  €M  CNJ  CN4 

So 

UJ  «j  re  ojQ  reO 
Q.  OC  CC  OC  OC  <  CD  O 


ir>  in  CO  T- 

CsJ      u  Cficb  C»4 


goinino  oooQ 

ioo>o>  o  otnoLQ 

C3"iir'«r'^>«-'  cvicoin<o 

T}-  T—  T-  T-  ■»—  T— 

(>J  Oi  C»4  Ol  C»4 


Z 


roO 


p  re 


X  (DO.  c  nj 
(DU.  ^tr  .  o 

</)t-  <D  Q>oS 

a:~?  © c^i^:  c 
MjoS jc  re-j^ ^  — 
p  c  w    £  .><  .a 

°^*?555SS  V:'cOoOoOoOoo  "JSP 
Q.oa5a5a5QQ  ojnnnnn  QZQ. 


<X)C/) 
gQCQ2Q.3 


E 

>-  w 

OC 


E_ 

Z33 


o^inojgjcvi 

00  o  T-  m  CD  T- 


inin  CO 
oif^  to 

CO  CO  CO 
cue*!  T- 


<0  CO  T-  CO 

T-  ojinco 


to 

oSSsfll 
Onnncc<q- 


DC  re  re-g 

5ccoc< 
<cvjT-2 

CE  T-IO  T- 


£E  o  re  re 
O  «Q-  Q-  >- 

Q.  CNj  CM  in  fl- 


oooin 

OO  O  C3^ 

in  in  CO  CM 

z 
o 

itn^g 

a  re  re  reo 
NCCQCir  CL 


inininino 
00  CM  00 1^  r>^ 

G4C0t-C*JO 
<UCa  CM 


cooooo 
c*»  CO  wr-^ 

C>4  CM 


oorjr^ 

C4CM  CO 


> 

S  re  S< 


UJ 

< 


0) 


OQ.-JHU.Q.2ZZ 


III 

n\ 

ijr 

IvS 


ii3 
III 

till 
till 


0 

o 
0 

CO 

CO 

0 
O 

a 

CO 

00 
00 
M 


o 

e 
o 

E 
o 


o 
o 

s: 


55 

<1)  D 

Oil 
o 

§5 

<0  CO 

00^^^" 
M  O  C 


6x3  t-  6 

O  <D  ^  p 
jx:  .  .ia  Q  3 

M  E  CL  "D  CD 


^  o 
o  ^ 
© «  c 

<D^  •  C 

55  o  E  - 

©  m 

^  o  x:  <o  :c 


D  8^ 

^  ^  o  .  2, 
©  £  0  5 

>-  D  C  - 
^  O  <D  > 

p  qJ  ^  O 

Q  £)  5  0) 


S  8 

C  — 

o 

c  P 


'      oo  O 

©  JO 

u.  Q  n  3 

^  «  5  ^-  § 

?3  £<^:=  ^ 


5  tr  00 

O  t  (1) 

^  y  O 
o  o| 


O 

o 
z 

CO 

a 
o 

Q> 

> 
o 
a 

CO 
CO 
M 


o 
o 
oo 
c 

o 
o 

QQ 


9S; 


§°<5 

S  *  h 

*>  "  O 


WW 

O  cx>  Q-OO  -t 
>  <B  >.  O  (D 

D  ®  0)  c 
M  ®  I  0)  g 

g  E  ^  CO  5 

(J  C  T)  O  ® 

^  2E  B  ^ 

2  g  -Q  5  Q- 


SOFTUJnR€® 


flL6€RT  f .  RbDRIGU€Z 


PROPRIETOR 


1  eOS  PENNSYLVANIA  AVE. 

NO.  aoA 

MIAMI  BEACH.  FU  331 38 


ZX-TEXT 


C30S)  931-6484 

THE    PROGRRM    IS    MENU -DR lUE N . 
IMMEDIRTELY    RFTER    IT    IS  LORDED 
YOU    WILL    BE    CONFRONTED    WITH  R 
GRRPHIC    FRRME    LISTING   THE  NRME 
OF    THE    PROGRRM    WITH    R  PROMPT 
MESSRGE    URGING   YOU  TO 
CHOOSE   RN   OPTION.      THE  CHOICE 
MUST    BE   MRDE   USING   ONLY  R 
NUMBER    BETUEEN    1    RND   5..  IN- 
CLUSIVE . 

THE    OPTIONS    FERTURED    IN  THE 
UHRT   THIS   PROGRRM  IS 
^5?.?J^7.J*^^^^  RBOUT.       RN  IN- 

SjyjgURL   EXPLRNRfTION   OF  THESE 
OPTIONS   RND  THEIR  FUNCTIONS 
WILL   RLLOU  YOU  TO  ERSILY 
RND   EFFECTIVELY   USE  THIS  PRO- 
GRRM.      RFTER  YOU   HRVE  R 
CLERR   UNDEIRSTRNDING   OF   HOU  TO 
USE  THE   PROGRRM,    IT   UILL  BE 
PRIMRRILY   UP  TO  YOUR  IMRGINR- 
TION  TO   DETERMINE   HOU  YOU  MRY 
RPPLY    IT.      THOUGH,     I   UILL  MRKE 
SOME   SUGGESTIONS  TOURRD  THE 
END   OF  THIS   PRESEINTRTION  RBOUT 
HOU  THIS   PROGRRM   DOES  HRUE 
SOME  PRRCTICRL   RPPLICRTIONS . 


THIS   PROGRRH    IS   RBOUT  WORD 
PROCESSING.      USING    IT  TO  URITE 
THE  TEXT   OF  THESE  INSTRUCTIONS 
SEEMED   R  GOOD   URY   OP  SHOUXNG 
UHRT    XT   CRN  DO   RND  UHRT    XT  CRN 
BE   USED  FOR. 

-r,r'^tlS..'^?SgS^tL^^   SELF -RUNNING, 
?5  X2H   S^E^JI   ^^OM  EXECUTING 
Jlnr-SSy.  ®^   RESTRRTED   EITHER  BY 
ENTERING    "RUN"     4 IF   YOU  DO 
S2I...^95E,-v^O^^NG   UHRT   YOU  HRKJB 
BEEN   COMPOSING)    OR    "GOTO  SO" 
(IF  YOU  URNT  TO  RUOID 
LOSING^WHflTEUER  YOU  HRUE  BEEN 


_  THE   PROGRRM   URS   MRDE  WITH 
g^RTRIN   l^IMITS    IN   MIND.  IT 
OFFERS    2^0    LINES   RT    30  COLUMNS 
RURILRBLE    PER   LINE,       RT  RN 
RUERRGE    OF    5    UORDS    PER    LINE  IT 
SHOULD   PROUIDE   ROOM   ENOUGH  FOR 
RBOUT   R    13^>0   UORD   ESSRY ,  DE- 
PENDING,   OF   COURSE,    ON  THE 
STYLE   OF    URITING   OF  THE 
RUTHOR.       IF    EUER  THERE  SHOULD 
RPPERR    R   FLRSHING,  INVERSE 
VIDEO    MESSRGE    SRYING  THRT 
THERE    RRE    NO    MORE    LINES  RVRIL- 
RBLE,    THEN,    YOU  SHOULD 
,^iy2..^^»1«''"E^ER   TEXT    YOU  HRVE 
URITTEN   TO   THE    PRINTER  OR 
STORE   THE    SRME    ON  TRPE  BEFORE 
CLERRING   THE    STORRGE    RRER  SO 
THRT   YOU    MRY    BEGIN    RNEU , 


THE  FIRST  OPTION   PERMITS  YOU 
TO  WRITE,    STORE  RND  DIS- 
PLRY  TEXT   ON  THE   SCREEN  IN 
SCROLL   FRSHION,      THE  LINE 
BEING   WRITTEN    IS   COMPOSED  IN 
THE   ENTER   LINE   RT  THE  BOTTOM 
OF   THE   SCREEN,      YOU  HRVE 
HORIZONTRL   CURSOR -CONTROL  WITH 
DELETE   CRPRBILITIES   WHEN  COM- 
POSING  R   NEW   LINE   OF  TEXT, 
YOU   MRY    RLSO   ENTER  RERD/EDIT 
MODE   FROM  THIS   OPTION   BY    KEY - 
5HP  "♦E".       HOWEVER,  WHEN 

YOU   DO  THIS,    DO   NOT   USE  THB 
?B^J£S^^^^^  IMMEDIRTE- 
LY  RFTERWRRDS   OR   BEFORE  YOU 

WHEN  THE   LINE   BEING  TYPED 
RERCHES  THE   30TH   COLUMN  THE 
SCREEN   BLINKS.      THIS  FERTURE 
IS    SIMILRR   TO  THE   BELL   ON  R 
TYPEWRITER   WHICH  SIGNRLS 
THRT    IT    IS  TIME  TO   ENTER  R 
LINE    OF   TEXT    RND  THEN   BEGIN  R 
NEW   LINE.       RFTER   R   LINE  IS 
ENTERED    IT    IS   STORED    IN  RN 
RRRRY    FOR   FUTURE  REFERENCE. 
BLRNK    LINES    RRE    ENTERED  BY 
PRESSING   THE    ENTER    KEY  RND 
RRE   STORED    IN  THE   SRME  URY. 
IF    R   LINE    LONGER  THRN  30 
COLUMNS    IS   ENTERED    ONLY  THE 

^S^^I^^P-.F.S^^^C'^^R  LOCRTIONS 
OF   THE    LINE    UILL    BE    STORED  RND 
PRINTED    ON  THE    SCREEN.  BEFORE 
RNY    LINE    IS    URITTEN  RND 


44 


ENTERED   YOU    CRN    CRUSE  THE 
PROGRRM   TO    REUERT   TO   THE  MENU 
BY    KEYING    *'*M"    AND  THEN 
ENTER.       THE    PROGRRM    WILL  RLSQ 
RETURN   TO   MENU    IF   THE  LIME 
COUNTER    *'K**    IS     >    THRN    a^O , 
UNDER  THE   LRTTER   CONDITION  THE 
INUER5E    UIDEO    PROMPT  UILL 
PLRSH    INFORMING  YOU  THAT 
THERE    RRE    NO    MORE   LINES  flURIL- 
RBLE.      THIS    CONDITION   CRN  BE 
REMEDIED   BY   EXE:RCISING  THE 
OPTION    "CLERR" . 


RFTER  YOU    ENTER   R  BODY 
OF  TEXT   YOU   MRY    PROOFRERD  IT. 
THIS    IS   UHERE   THE    "RERD/EDIT  ' 
OPTION    COMES    IN.       ON   R  PER 
LINE   BRSIS  THE  TEXT  THRT  URS 
URITTEN   WILL   BE  DISPLRYED  ON 
THE   SCREEN    IN   SCROLL  FRSHION. 
RFTER   R   LINE    IS  PRINTED 
YOU   HRUE   3   SECONDS  TO  RERD  RND 
DECIDE    IF   THE    LINE   NEEDS  EDIT- 
ING.      IF    IT    DOES   NOT  THEN  THE 
NEXT   LINE   WILL   BE   PRINTED,  RND 
SO   ON.       IF    IT   DOES   NEED  EDIT- 
ING YOU  THEN   PRESS  THE  ENTER 
KEY  TO   OBTRIN  THE  EDIT  MODE. 


THE  TEXT   EDITOR    IS   THE  HERRT 
OF   THE   PROGRRH*       IT    HRS  10 
DIFFERENT    FUNCTIONS.  FIRST, 
THERE    IS  THE   FUNCTION  "CON- 
TINUE",   WHICH    IS  GENERRTED  BY 
ENTERING    " «G" •      THIS  FUNC- 
TION  RLLOU5  THE  TEXT  TO  CO- 
MMENCE  BEING   RERD   RFTER   IT  URS 
STOPPED   FROM   SCROLLING   UP  THE 
SCREEN   WHEN   EDIT    MODE  URS 
ACCESSED .       SECOND,    YOU  MAY 
•REPLACE"    RN   ENTIRE   LINE  OF 
TEXT   BY    ENTERING  "*R". 
RFTER  THIS   SYMBOL   APPEARS  ON 
THE   SCREEN  YOU  TYPE   RND  ENTER 
THE   NEU   LINE.      THIRD,    THERE  IS 
A    "CHANGE"    FUNCTION  THAT 
PERMITS   ONE   OR   MORE   UORDS , 
SYMBOLS    OR   SPACES  TO   BE  MODI- 
FIED.      AFTER  THE   COMMRND  "♦C" 
IS    ENTERED  YOU    ENTER  THE 
BLOCK   OF    CHARACTERS  YOU  WANT 
TO   REMOUE   FROM  THE  TEXT.  NEXT 
YOU   PLRCE  THE   CURSOR   UNDER  THE 
SECOND    CHARACTER  LOCATION, 
FIRST   TO  THE   RIGHT,  FROM 
THE   PLACE   ON  THE   LINE  THAT  YOU 
UANT  TO   REPLACE  THE   OLD  WORD 
OR    EXPRESSION    UITH    A    NEW  ONE. 
AFTER   THE    CURSOR    IS  PROPERLY 
LOCATED  THE   SYMBOL  IS 
TYPED    UITH  THE   NEU    WORD  OR 
EXPRESSION    IMMEDIRTELY  FOLLOW- 
ING .       NOW    KEY    ENTER    RND  YOU 
WILL    HflUE   YOUR    CORRECTION  PRO- 
PERLY   RECORDED,  FOURTH, 
YOU    MRY    "DELETE"    A    LINE  THRT 
IS    FIRST    ABOUE   THE    ENTER  LINE 
BY    KEYING    " *D "    WHILE    IN  THE 


EDIT    MODE    WITHOUT    LEAUING  ANY 
GAPS    BETWEEN    LINES.  FIFTH, 
n    NEW    LINE    CRN    BE  "INSERTED 
RFTER    ONE   LINE    OR  2^1^?^^ 
TUG    LINES    WITHOUT    gg^SING  RNY 
PREEXISTING    LINES   OF   THE  TEXT . 
YOU   TYPE    IN  THE    SYMBOL  *I 

-f  HEN    AFTER    IT    gPf  Egg$c=.^X?^THF 
«ND   ENTER  THE    CONTENTS   OF  THE 
NEW    LINE.       SIXTH,    BY  ENTERING 
"*T"   THE  TEXT    WILL   BEGIN  TO 
BE   DISPLAYED   FROM  THE  START. 
SEUENTH,    ANY    LINE   BEING  WORKED 
ON    BY   THE    EDITOR    MUST  ALWAYS 
BE   THE    FIRST    LINE   ABOUE  THE 
ENTER   LINE.      TO   RSSIST  IN 
PUTTING    R   LINE    INTO  THIS 
PLRCE   FOR    EDITING   A  "LIST" 
FUNCTION    IS   AUAILABLE.  AFTER 
••*L"    IS    KEYED   AND  ENTERED 
THE   LINE   NUMBER   OF  THE  FIRST 
LINE   ABOUE  THE   ENTER   LINE  IS 
DISPLAYED.       IT    IS  THEN  R 
MATTER   OF   COUNTING   FROM  THRT 
LINE   NUMBER   UPURRD^OR  £0"^- 
WARD  TO   DETERMINE  THE  NUMBER 
OF  THE   LINE  YOU  ENTER    IN  ORDER 
TO   BRING    IT    INTO  POSITION  FOR 
EDITING.      THE  LINE  NUHBER  YOU 
TRY  TO/ LIST   CANNOT    BE  195^ 
1?    >    a&0    OR    >   THAN  THE  LAST 
LINE  THAT   UAS   URITTEN  UHEN 
IN   URITE    MODE   OR   ELSE  THE  PRO- 
GRAM  UILL   CONTINUE  TO   RSK  FOR 
R   NEU   LINE   NUMBER  ENTRY. 
IF  YOU   KEY    IN   0,    THEN,  THE 
PROGRAM   RETURNS  TO   URITE  MODE. 
EIGHTH,    BY    KEYING    "*U"  AND 
THEN  ENTER  THE   COMPUTER  RE- 
TURNS TO   URITE   MODE  UITHOUT 
ERASING  THE  TEXT   DISPLRYED  ON 
THE   SCREEN.       IT  WILL   BEGIN  TO 
URITE   R   NEU  LINE  RFTER  THE 
LINE  THAT  URS   LAST  URITTEN. 
NINTH,    THE   PROGRRM  INCLUDES 
R   SPLIT-SCREEN  FERTURE  UHICH 
IS   flUAILABLE   UHEN  THE  COMMAND 
"*SS"    IS   KEYED    IN  DURING 
EDIT   MODE.      THIS  FERTURE  PER- 
MITS TUO   HRLF -SCREENS   IN  ONE 
FULL   PICTURE  SCREEN.      TEXT  CAN 
THEN   BE   COMPARED   ON  THE_BRSIS 
OF   EUERY    10   LINES  UITH  THE 
SAME   EDIT   FEATURES  UUST  J>ES- 
;  CRIBED   BEING   RUAILRBLE.  UHEN 
IN   SPLIT-SCREEN   MODE  YOU 
OPERATE   EACH  HALF -SCREEN 
EXACTLY   AS  YOU   UOULD  ONE  FULL- 
SCREEN .      THE   ADUANTRGE  OF 
SPLIT-SCREEN   LIES    IN  THRT 
HIGHER   RND   LOWER  PORTIONS  OF 
A   GIUEN  TEXT   MRY   BE  COMPARED 
TO   FIND    GRRMMRTICAL   OR  SYN- 
TACTICAL   ERRORS.       IT    MAY  ALSO 
BE    USED   TO   READ /EDIT  TUO 
DOCUMENTS  SIMULTANEOUSLY. 
IF   YOU    WRNT   TO   MOUE  THE 
TOP-HALF   YOU    ENTER  "T"_RND 
TO    MOUE   THE    BOTTOM -HALF  YOU 
ENTER    "B"    RFTER    10    LINES  OF 


4  5 


TEXT    RRE    PRINTED    ON    THE  RES- 
PECTIUE    SCREEN.       RFTER  EUERY 
10    LINES   THRT    RRE  PRINTED 
THE    CURSOR    RPPERRS    RT  THE 
BOTTOM    OF    THE    SCREEN.  RT 
THIS   TIME     (RND    SISi   UHEIN  THE 
ENTER    KEY    IS    DEPRESSED  TO 
RCCE5S    EDIT    MODE)  YOU 
HRUE  THE    CHOICE    OF    MOUING  THE 
TOP    OR    BOTTOM -HRLF    OF  THE 
SCREEN    OR    STRRTING    FROM  THE 
BEGINNING  TO   UIEU  THE  TEXT 
BY   KEYING    "N"    OR  REUERTING 
TO  THE   MENU   BY    ENTERING  ••*M". 
FINRLLY,    UHEN   YOU  URNT 
TO    RETURN   TO   THE   MENU  YOU  CRN 
DO   SO   BY    ENTERING    "*M"  UHEN 
IN   EDIT  MODE. 


BESIDES    ITS    PRRCTICRL.  UORTH 
USING    THIS    PROGRRM  PROUIDES 
CERTRIN    RDURNTRGES    OUER  THE 
MORE    CONUENTIONRL    URYS  OF 
DOING    THE    RBOUE    SRID    TRSKS . 
SflUINGS    IN   TIME,    PRPER,  INK, 
PRINTING^  PHOTOCOPIES, 
CORRECTING   MISTAKES    RND  RDDING 
RFTERTHOUGHTS   RRE   UUST  SOME 
OF   THE   PROCESSES   HRNDLED  MORE 
EFFICIENTLY   RND   UITH  LESS 
TROUBLE   THRN   DOING  THEM  EITHER 
THROUGH    HRNDURITING    OR  USING 
R  TYPEURITER. 


THE   REST   OF   THE   OPTIONS  RRE 
THE    "PRINT",    "SflUE"  RND 
•CLERR"    FUNCTIONS   OF  THE 
PROGRRM.      THEY    RRE   QUITE  BRSIC 
IN   UHRT  THEY   DO   RND   HOU  ERCH 
DOES   UORK.      HENCE,    NO  EXPLRNR- 
TION    IS   NEEDED   RS  TO   HOU  TO 
USE  THEM.      JUST   ENTER  THE  DE- 
SIGNATED  NUMBER   RND   URIT  UNTIL 
THE  MENU   RPPERRS   ON  THE  SCREEN 
RGfllN.       BE   SURE  TO  TURN  ON 
YOUR  TRPE   RECORDER   BEFORE  YOU 
EXECUTE  THE   5ROE  OPTION, 


THE   PROGRRM    IS,    OP  COURSE, 
COMPATIBLE  UITH   EITHER  THE 
2X   OR  TIMEX  PRINTER.       UITH  THE 
ADDITION  TO  THE  COMPUTER  OP 
EITHER  A   SERIAL  OR  PARALLEL 
INTERFACE   ALONG  UITH   A  MORE 
SOPHISTICATED  DOT-MfTTRIX 
PRINTER  THE   APPLICATION  POS- 
SIBILITIES  FOR  THIS  PROGRAM 
RRE   EUEN   GREATER.      THE  OURLITY 
OF   OUPUT    GENERATED   BY  THE  PRO- 
GRAM   IS   SOMETHING  THAT  DEPENDS 
ON  THE    INDIUIDUAL  TASTE   OP  THE 
USER.      HOUEUER,    THE   CONTENT  OF 
SRID   OUPUT    (I.E.,    UHAT  THE ^ 
PROGRAH   CAN   BE   USED   FOR)  XS 
GENERRLLY   OBUIOUS  TO   ANY  USER. 


UJord  Processing 

T/ST€Xr  2000^" 


COPYRIGHT  (C)  1983 
ALBERT   F.  RODRIGUEZ 


PRICE:    $19.95    IN  CR55ETTE 
COMPUTERS:    ZX81,  TS1000, 
TS1500,  T52068 
LHNGUflGE:    SINCLAIR  BASIC 
ROM/RHM:  8K/16K 
LORD   NAME:  ■"TEXT" 
LORD  TIME:    5.2)3  MNT5  . 
PROGRAM   LI5TABLE:  NO 
PROGRAM   LISTINGS:    YES,  $6.50 
EXTRAS:    RECORDER  AND  PRINTER 
PROGRAM   BYTES;    14- ,  823 
SYNTACTIC  SUM:  4-24,665 


LETTERS,    REPORTS,  ARTICLES, 
MEMOS,    STANDARD   PORHS ,  MEDIUH 
DISPLAYS,    INSTRUCTIONS^  NEUS 
BULLETINS,    CLASSIFIED  ADUER- 
TISEMENTS,    GRAPHS   AND  CHARTS, 
MANUSCRIPTS,    LISTS   OP  CUS- 
TOMERS  OR   FRIENDS   OR  CLUB 
MEMBERS,    TELEPHONE   RND  RDDRE5S 
DIRECTORY    .     .     .    ETC, ,  RRE 
SOME   OF   THE   MORE  PERTINENT.. 
RERL-LIFE    RPPLICATION5  THRT 
COME    IMMEDIATELY  TO  MIND. 


MJ{.  SOFTUJARC® 

1 605  PennsylvQnlQ  five..  #  204 
Miami  BcQch.  a  33139 

(305)  531-6464 


aofiiDiflNS  noD  snL€S  trx 

D€AL€ft  INQUIftlCS  UI€LCOM€ 


46 


New  Sinclair  Newsgroup  on  USENET 
By  Tim  Swenson 

A  new  newsgroup  is  now  available  to  those  that  read  USENET 
News  on  the  Internt.  This  new  newsgroup  comp. sys . Sinclair  is  for 
discussions  on  all  Sinclair  computers.  It  was  started  by  those 
interested  in  the  Spectrum  and  it's  emulators,  but  can  be  used  by 
all  to  discuss  any  Sinclair  computer,  including  the  Z88  and  Sir 
Clive  himself. 

Below  is  a  few  selections  from  recent  postings  to  the 
newsgroup: 

Has  anybody  here  ever  used  their  Sinclair  for  something  other 
than  what  it  was  originally  intended? 

Both  a  friend  and  I  had  Sinclairs,  and  after  we'd  gotten 
bored  with  them,  his  father  picked  up  a  Timex  for  $15  in  NYC  while 
on  business.  Since  the  Timex  had  a  whopping  2K  of  memory,  instead 
of  only  IK,  we  turned  his  Sinclair  into  a  Dalek  (enemy  robot  from 
Dr.  Who) . 

The  design  was  extremely  simple,  but  impressive  considering 
our  lack  of  $$  and  that  we  were  only  16  at  the  time.  The  robot 
had  two  servos  which  we  glue-gunned  big  rubber  wheels  to,  and  a 
plunger  glued  to  a  micro  switch.  Using  74LS00s  for  address 
decoding  and  power  transistors  to  drive  the  servos,  if  you  POKEd  a 
1  to  any  address  between  32k  and  48k,  it  would  drive  the  left 
wheel  forward  about  an  inch,  POKEd  a  2  would  drive  the  other  wheel 
(and  yes,  poking  3  would  drive  them  both).  Peeking  and  checking 
bit  3  would  tell  you  if  the  micro  switch  was  open  or  closed. 

The  program  would  move  the  left  and  right  wheels  together, 
and  then  check  to  see  if  the  switched  was  closed  (dalek  had  bumbed 
into  something).  If  the  switch  was  closed,  it  would  randomly 
chose  to  move  only  the  left  or  right  wheel,  enough  to  turn  the 
dalek  90  degrees.     Then  it  would  continue  to  lurch  forward. 

We  later  modified  this  thing  to  operate  off  of  a  12volt 
gelcell,  and  made  a  little  box  inside  the  four  foot  tall  dalek 
which  enabled  us  to  start  the  Sinclair  and  load  the  program,  then 
disconnect  the  monitor  and  tape  recorder  and  let  the  thing  wobble 
around  the  room  until  the  batteries  ran  out  (about  1  hour).  If 
we'd  had  an  LCD  TV,  I'm  sure  we  would  have  glue-gunned  that  in  as 
we  11 . 

Dominic  Richens  (dominic@oeg . car leton. ca) 


My  dad  had  the  field  engineers  of  General  Electric's 
Installation  and  Service  Engineering  Division  using  TS  2068's  with 
the  1967  ASME  steam  tables  &  custom  software  analysing  medium 
steam  turbine  performance  testing.  The  binary  precision  of 
floating  pt  numbers  was  32bits  as  opposed  to  the  IBM  floating  pt 
precision  of  21  to  23  (remember  the  old  1.000001^10  test?),  so 
double  precision  wasn't  needed. 

I  helped  with  some  convergence  problems  going  from  H,S  to 
temperature      or     something     like     that.       I     got     the    number  of 

47 


iterations  it  took  to  converge  down  from  somewhere  between  60  and 
infinity  to  6  or  less. 

It  all  started  when  they  took  his  link  to  the  GE  timeshare 
machine  (a  teletype  and  acoustic  coupler)  away  (it  was  two  steps 
from  his  desk)  and  replaced  it  with  a  terminal  room  two  floors  up. 
Any  of  you  that  have  had  to  use  terminal  rooms  know  that  you  often 
forget  that  one  sheet  of  paper  and  have,  to  go  back  to  get  it  -  two 
floors  down.  This  was  1983  so  pc ' s  were  out,  but  expensive,  and 
the  ts2068  had  failed  (no  s/w,  the  bane  of  all  these  "great" 
pieces  of  h/w) ,  and  was  being  sold  for  $135  including  cassette 
tape  recorder  and  40  column  thermal  printer.  It  was  great,  where 
a  turbine  test  was  all  day  taking  data,  that  night  in  a  motel 
making  quick  numbers  from  a  Mollier  Chart  to  present  to  the  plant 
manager  the  next  day,  now  within  an  hour  after  the  test  was  over 
he  could  place  the  preliminary  report  on  the  plant  manager's  desk 
and  head  home. 

When  he  told  the  field  service  managers  that  he  had  a 
computer  and  software  to  make  their  FSE's  lives  easier,  they  said 
"how  much?"  (the  field  service  units  were  profit  and  loss  centers 
and  my  dad  worked  in  headquarters  i.e.  overhead)  They  were 
expecting  him  to  quote  a  price  in  a  pc  or  clone,  but  when  he  said 
$135,  they  said  "Oh,  I'll  take  2". 

If  any  of  you  ever  get  to  Cape  Hatteras  in  North  Carolina, 
USA,  stop  at  the  Canadien  Hole  about  a  mile  north  of  Buxton  and 
look  for  the  "Microvan"  (Plymouth  Horizon)  with  the  anemometer  on 
a  windsurfing  mast  -  the  data  acquisition  system  is  being  run  by 
one  of  those  ts2068's.  There  is  also  a  setup  at  Fox  Watersports, 
a  surf  shop  in  Buxton.  That  one  survived  Hurricane  Emily  last 
august,  and  when  the  National  Weather  Service  anemometer  turned 
out  to  have  died  just  before  the  worst  of  it,  the  NWS  and  National 
Hurricane  Center  asked  my  dad  for  his  data.  Apparently  they  are 
running  fourier  transforms  on  it  -  this  is  the  first  time  they 
have  had  hurricane  wind  speed  data  in  digital  formatl  It's 
available  for  anon-ftp  from  moe.tn.conell.edu  if  you're 
interested. 

In  compiled  basic,  with  a  decent  a/d  chip  (the  first  one  used 
the  AO  line  for  a  clock  for  successive  approximation) ,  and 
compiled  basic,  the  setup  reads  data  at  around  100  Hz. 

My  favorite  memory  is  writing  a  "capture  the  mouse"  game 
where  you  draw  lines  to  force  a  bouncing  pixel  into  a  corner  -  of 
course  the  interpreted  basic  was  too  slow  and  this  was  before  we 
had  the  compiler,  so  I  tried  my  hand  at  machine  code  -  the  first 
few  times  you  jump  into  the  machine  code  and  the  machine  hangs,  or 
reboots,  after  a  few  debugging  cycles  the  program  seemed  to  be 
working,  but  I  couldn't  see  the  mouse.  So  I'm  digging  through  the 
code  trying  to  find  where  I'm  NOT  writing  the  mouse  to  the  screen, 
and  suddenly  I  say,  "maybe  it  is  there".  I  turned  off  the  lights 
in  the  room,  turned  up  the  contrast  on  the  crummy  b/w  telly,  and 
there,  about  every  dozen  pixels  or  so,  and  seemingly 
simultaneously  in  several  places  at  once  because  of  phosphor 
persistence,   is  the  mouse  flying  around  the  screen  at  warp  speed! 

Brian  Carcich  (carcich@cuspif.tn.cornell.edu) 


48 


I  guess  everybody  has  their  own  Golden  Age,  when  programming 
was  purely  for  fun.  My  experience  has  been  that  each  home 
computer  that  I  buy  is  more  powerful  than  the  last,  but  I  do  less 
actual  programming  on  it  than  the  one  before. 

So  of  course  I  recall  fondly  the  ZX-81,  the  machine  that  I 
fitted  with  a  surplus  movable  key  keyboard  (with  attached  Atari 
2600  type  joystick)  and  with  which  I  wrote  several  cool  arcade 
style  games  which  were  never  run  on  anyone  else's  machine.  They 
were  all  in  Z80  assembler  of  course,  and  WOW  was  I  impressed  when 
the  ole  ZX  managed  to  handle  25  concurrently  moving  robots  on  the 
screen  at  once   (albeit  a  bit  jerkily) . 

The  assembly  code  was  stored  as  BASIC  REM  statements,  and  was 
still  so  big  (I  only  had  16k)  that  I  had  to  assemble  the  program 
in  two  parts,  write  down  the  addresses  in  each  part  that  were 
visible  to  the  other  half,  and  manually  link  them  together. 
Sometimes  a  'build'  of  the  program  took  over  45  minutes  of  tape 
swapping  and  cursing. 

On  one  memorable  occasion  I  managed  to  blow  a  hole  in  the 
'roof  of  the  screen  and  some  of  my  robots  escaped  up  (actually  I 
think  it  was  downwards  in  the  address  sense  of  the  word)  and  off 
the  screen.  So  I  trundled  my  player  dude  (who  was  an  'A'  because 
it  had  two  legs)  over  to  the  hole  and  started  shooting  bullets  up 
and  out  of  the  screen  too.  "BLAM  BLAM  BLAM ,  Get  back  here!  Suck 
hot  asterisks,  you  little  cowards!"  Of  course,  my  executing  code 
(and  variables)  were  all  somewhere  up  there  too.  The  screen  shook 
violently  several  times,  and  everything  became  skewed,  as  if  each 
screen  row  had  grown  by  a  few  characters.  But  the  ZX  was  tough  to 
kill,  as  the  game  kept  running  and  my  bullets  could  run  wild  in 
all  directions  now.  So  I  shot  up  the  joint,  and  after  a  few  more 
screenquakes  (which  were  quite  amazing  to  watch,  because  they 
played  havoc  with  the  TV's  sync  pulses)  the  whole  thing  locked  up. 
I  almost  added  the  whole  scenario  into  the  game  as  a  'doomsday' 
option. 

Ah,  the  luxury  of  it  all:  a  trusty  machine,  a  wild 
imagination,  youthful  stamina  and  way  too  much  time  on  your  hands. 

"The  Sinclair  ZX-81:  Tough  as  nails  and  twice  as  fast!" 

Mike  Chapman     (mike@snowhite. cis .uoguelph.ca) 


HacKer's  Journal 

Supporting  Ali  QL  Programmers 


Timothy  C.  Swenson,  Editor 

5615  Botkins  Rd. 
Huber  Heights,  OH  45424 
(513)  233-2178 

swensotc@p2.ams.wpafb  af .  mil 


QL  SURVIVORS  SOURCE  BOOK 

2ND  EDITION  -  This  book  contains  worldwide  lists  of  all  QL  BOOKS;  PERIODICALS; 
BULLETIN  BOARDS;  USER  GROUPS;  HARDWARE  and  SOFTWARE  DEALERS;  PUBLIC 
DOMAIN  and  SHAREWARE  SUPPLIERS.  Nowhere  else  can  you  find  all  of  this  data  in 
one  easy  to  use  source.  This  is  a  work  of  art  by  the  same  great  folks  that  brought  you 
IQLR.  and  offered  by  UPDATE  Magazine.  When  we  sell  out  of  current  stock  It  will  be  gone. 
It  is  now  available  for  only  $10.00  US$,  and  this  now  includes  all  postage  and  handling  in 
the  North  and  South  American  areas.  Order  now  and  it  will  be  shipped  to  you  by  either 
First  Class  Mail  or  Priority  Mail;  no  more  waiting  around  for  slow  UPS  delivery!  Whatever 
It  Is  you  are  tooking  to  buy  for  your  QL.  this  will  tell  you  where  to  look  for  it,  ak?ng  with 
phone  and  fax  numbers,  as  well  as  addresses. 

□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□ 


Z88  SOURCE  BOOK 

This  book  was  complied  by  Tim  Swenson  and  published  by  UPDATE  Magazine,  and  was 
designed  to  be  a  good  and  concise  reference  book  on  the  Z88;  how  to  interface  it  with  the 
rest  of  the  worlds  computers;  what  products  are  available  for  it  and  where  to  find  them.  It 
will  not  replace  your  Z88  user  guide,  but  will  instead  supplement  it,  and  fill  in  areas  that 
were  missing  by  puning  all  this  Information  in  one  easy  to  use  book.  When  you  order  it  we 
also  include  a  disk  of  utilities  and  programs  that  are  discussed  in  the  book.  This  Is 
available  In  the  folkjwlng  formats:  QL  in  3 1/2 1440  or  2880  sector  disks;  QL  in  5 1/4  720  or 
1440  sector  disks;  IBM  360K  5 1/4  disks;  IBM  720K  5 1/4  disks;  IBM  720K  3 1/2  disks; 
IBM  1 .4  meg  3 1 12  disks.  Please  let  us  know  with  your  order  which  type  and  size  of  disk 
you  need.  The  price  for  all  of  this  Is  $7.00  US$,  which  includes  P.  &  H.  In  North  America, 
and  elsewhere  $7.00  US$  plus  $2.00  US$  for  the  additional  postage  we  have  to  pay.  We 
will  accept  for  foreign  orders  the  cash  equivalent,  plus  10%  for  conversion,  if  you  are 
unable  to  obtain  a  money  order  or  travelers  check  in  US$.  We  want  to  make  this 
information  widely  available,  so  we  are  trying  to  be  as  flexible  as  possible. 


□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□ 


TS2068     UPDATE     ISSUE  DISKS 


These  disks  contain  at  least  one  major  piece  of  software  written 
specifically  for  disk  drive  and  are  guaranteed  to  be  worth  the  money. 
The  rest  of  the  disks  are  usually  filled  with  various  utility  programs 
taken  from  the  issues  of  UPDATE,   shareware  or  public  domain.  On  most 
of  these,   half  the  money  goes  to  the  author  and  is  meant  to  encourage 
new  programming  for  the  TS2068  that  makes  use  of  the  various  disk 
drive  systems.   To  have  your  particular  disk  system  supported  here 
requires  that  someone  write  or  alter  the  software  from  one  system  to 
the  other.  We  are  always  open  to  your  help  and  suggestions,  but  have 
limited  time  and  programming  resources  available  here.  The  prices  are 
as  listed  beside  each  piece  of  software.  We  can  provide  all  but  3" 
disk  formats  as  far  as  size  and  disk  density.  We  accept  cash,  checks, 
money  orders  and  C.O.D. 


1)  THE  WIDJUP  COLLECTION,   contains  most  of  the  popular  programs 
formerly  offered  by  WIDJUP  and  written  by  the  late  Bill  Pedersen.  This 
is  a  two  disk  set,  and  does  not  include  his  CAD  Program.   It  contains 
editors,  printer  drivers,  games, TS2068  tutorials,  etc.  This  is  a  new 
release  and  we  will  have  more  about  it  next  issue.   In  Oliger  or  Larken 
disk  formats.  The  price  is  $20. 

2)  WIDJUP' S  CAD  PROGRAM,  a  long  time  favorite  that  will  give  you 
professional  results  from  your  TS2068  in  the  area  of  computer  aided 
design  and  the  development  of  printed  circuits.  With  the  right 
graphics  it  has  been  also  used  to  print  a  page  for  desk  top 
publishing,  or  computer  art.   It  requires  no  expanded  memory  and  is 
available  for  the  following  setups:    (a)  Oliger,   for  either  the 
Olivetti  Ink  Jet  printer,  or  for  IBM  compatible  printers,   (b)  Larken 
for  IBM  compatible  printers  or  for  the  Olivetti  Ink  Jet  printer. 
Please  specify  disk  size,  format  and  printer  type.  The  price  is  $20. 

3)  OLIGER  DISK  DRIVE  BBS  PROGRAM,  this  creates  a  single  user  BBS 
program,  with  several  message  bases.   E-mail,   and  SYSOP  Chat  area.  We 
have  also  added  many  other  Oliger  disk  programs  to  this  collection,  as 
well  as  some  playtime.  This  was  written  by  Paul  Holmgren.  The  price  is 
$20. 

4)  24-PIN  BIT  IMAGE  GRAPHICS  FOR  24-PIN  OR  BUBBLE  JET  PRINTERS,  for 
Epson  emulation  modes,  by  Larry  Crawford.  This  program  takes  the 
mystery  out  of  graphics  and  some  of  the  newer  printers  out  there  on 
the  market.  We  also'  include  some  extra  software  with  this  one,  and  for 
just  $15.   It  is  available  in  Larken  and  in  Oliger  disk  formats. 

Needless  to  say  we  are  always  interested  in  a  new  issue  disk  we  can 
present  here  for  our  readers,  so  those  who  are  out  there  writing 
programs ,  send  them  to  us  to  look  at.  This  helps  to  keep  the  TS2068 
aiive.  It  is  also  a  way  to  pick  up  some  pocket  money.  We  usually  make 
royalty  payments  twice  a  year  based  on  previous  sales. 


PL     ISSUE  DISKS 


These  disks  contain  at  least  one  major  piece  of  software  written 
specifically  for  disk  drive  (exceptions  are  noted)  and  are  guaranteed 
to  be  worth  the  money.  The  rest  of  the  disk  space  is  often  filled  with 
various  utility  programs  taken  from  the  issues  of  UPDATE  thrown  in. 
Half  of  the  money  from  the  sale  of  these  programs  goes  to  the  software 
author  to  encourage  the  creation  of  more  QL  software  for  our  readers. 
Some  of  the  programs  take  advantage  of  Tool  Kit  2  by  Tony  Tebby,  and 
need  it  to  work.   If  that  is  the  case,   it  will  be  listed  in  the  program 
description.  The  price  is  listed  with  each  program.  They  are  available 
in  both  3  1/2  and  5  1/4  disk  formats.  This  is  for  360K,   720K  and  1.4 
meg.   If  needed  on  an  ED  disk,  then  you  must  provide.  We  accept 
personal  checks,  company  checks,  money  orders,  cash,  and  C.O.D. 
orders.  No  charge  cards,  please. 

1)  CABLE  ARCHIVE  ISSUE  DISK  -  Written  by  Bill  Cable.   Contains  many 
useful  ARCHIVE  programs  that  work  on  any  ARCHIVE  database.   The  titles 
include:   DIR  (directory  within  ARCHIVE),   SCAN  (guick  database  display 
and  print),   FREQ  (Frequency  distribution  of  a  field),   SPLIT  (split  1 
database  display  and  print),  JOIN  (join  2  databases  into  1),  REFIELD 
(redefine  field  names),  REPLACE  (replace  text  within  a  database), 
MATCHER  (find  duplications  in  a  database),  WINDEX  (word  index  any  text 
file),   GROUP 1 ,   GR0UP2,   GR0UP3   (useful  procedures  from  UPDATE 
articles),  QUERY  (interrogate  any  database).  Also  included  are 
extensive  DOC  files  about  the  programs  and  about  ARCHIVE  in  general. 
The  price  is  $20. 

2)  QLUSTER  5sl09  ISSUE  DISK  -  This  great  program  by  Al  Feng  provides 
you  with  many  utilities  to  handle  and  unclutter  your  disk  and 
microdrives,  and  it  now  supports  sub-directories.  Some  of  the  features 
concern  COPY,  DELETE,  FORMAT,  VIEW,  as  well  as  extended  use  of  some 
TK2  commands  (needed  for  this  program).  These  are  TURBO  compiled  to 
add  speed  to  the  program.   It  will  multi-task  and  allows  you  to  use 
minimal  keypresses  to  get  the  job  done.  This  program  has  had  some 
major  upgrading  and  bug  fixing  over  the  years  and  is  Minerva 
compatible.  The  price  is  $15. 

3)  QLuMSi  DOS  4.30  ISSUE  DISK  -  Al  Feng  also  extensively  updated  this 
recently.  This  is  both  an  MSDOS  simulator  and  a  front  end  program  for 
the  QL.  It  also  has  other  programs  on  the  disk  to  enhance  file 
management  and  the  cloning  of  other  programs.  Educational  as  well  as 
useful.  The  price  is  $20. 

4)  QL  COMPENDIUM  ISSUE  DISK  -  Now  a  four  disk  set  of  useful  programs 
and  utilities  taken  from  UPDATE,  plus  the  latest  file  compression  and 
decompression  utilities,  Tcopye,  Quad  Format,  C  utilites,  E-forth,  and 
alien  disk  file  transfers,  and  more.  The  best  of  UPDATE,  shareware  and 
public  domain.  Still  only  $20.  $5  for  an  update  for  past  purchasers. 

We  here  at  UPDATE  encourage  all  of  you  programmers  out  there  to  submit 
to  us  possible  future  Issue  Disks,  with  DOC  files.  You  won^t  get  rich, 
but  you  will  possibly  make  some  money  and  get  to  help  others.  Royalty 
payments  are  usually  twice  a  year,  based  upon  previous  sales.